如何使用Eclipse调试JNI代码(Java和C / C ++)

虽然我可以使用用于Java代码的Eclipse JDT调试器和用于C代码的GDB调试我的应用程序,但我更倾向于使用单个工具进行所有调试。 我找到了几个在Eclipse中启用“混合模式”调试的项目,并支持Java和本机代码之间的单步执行。

  • 英特尔针对Java / JNI环境的集成调试器
  • Mariot Chauvin的代码之夏项目:支持JDT和CDT之间的无缝调试

不幸的是,一个声称是预发布质量,另一个目前没有维护。 是否有任何插件能够以可靠的方式为Eclipse带来混合模式调试function,还是应该继续使用两个单独的调试器?

我认为今天没有任何东西可以修复它,但我知道Doug Schaefer在他想要完成的事情清单上有这么高的优势。 关注他的博客 ,关注他的博客 。

对于那些希望在Eclipse Juno版本中调试NDK / JNI代码的人来说,它在安装Android插件和CDT插件后基本上内置于软件中。 您可能遇到问题,因为C / C ++开发工具(CDT 8.1)引入了一个问题,截至7/24/12尚未修复。 有关该问题的详细信息,请参阅以下链接。 如果您只是想调试,请继续阅读。

http://code.google.com/p/android/issues/detail?id=33788

如果它正常工作,您只需在C和Debug As – > Android Native Application中设置断点。 不幸的是,你无法同时调试java和C. 如果问题出在Java中并且您想调试,则可以通过单击Debug As – > Android Application来实现

如果它不能正常工作,并且您想弄清楚如何正确使用它,以下包对我有效。

Android DDMS 20.0.1.v201207132230-403220 Android Development Tools 20.0.1.v201207132230-403220 Android Hierarchy Viewer 20.0.1.v201207132230-403220 Android Native Development Tools 20.0.1.v201207132230-403220 Android Traceview 20.0.1.v201207132230-403220 Autotools support for CDT (Incubation) 3.0.1.201202152032 C/C++ Development Tools 8.0.2.201202111925 C/C++ Development Tools SDK 8.0.2.201202111925 C/C++ Library API Documentation Hover Help (Incubation) Eclipse SDK 4.2.0.I20120608-1400 Tracer for OpenGL ES 20.0.1.v201207132230-403220 

android包来自Eclipse 帮助 – >安装新软件…对话框中的设置工作:选项

 dl-ssl.google.com/android/eclipse/ 

较旧的8.02 … CDT软件包来自于将Indice版本软件包设置为Indigo版本软件包。

 download.eclipse.org/releases/indigo 

如果已安装,则需要在安装旧版CDT之前删除Android工具和新版CDT。 一旦安装了8.02 …版本的CDT,您就可以安装Android工具并开始调试。

确保使用Build命令“ndk-build NDK_DEBUG = 1”

Autotools可能不是必需的,但由于它已经安装,我已经列出了它。

请注意,单步执行代码有时会很古怪。

ARM本身似乎有一个工具包: http : //ds.arm.com/ds-5-community-edition/

需要Eclipse 4.4(“Luna”)。

使用新的Android ADT软件包(截至2013年12月5日),不再需要旧的8.02软件包。 如果您发现自己正在编辑文本文件以使调试正常工作,那么您将遵循不再适用的旧方向。 使用android ADT和Debug As-> Android Native Application。 如果尚未在设置中完成,则可能仍需要设置NDK_DEBUG = 1。

Eclipse Sequoyah 1.0具有android ndkfunction..Eclipse 3.6发布列车和3.5发布于6月初。