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

22

虽然我可以使用Eclipse JDT调试器来调试Java代码,也可以使用GDB来调试C代码,但我更希望使用一种工具进行所有调试。我发现了几个项目,这些项目在Eclipse中启用了“混合模式”调试,并支持在Java和本地代码之间单步执行。

不幸的是,其中一个声称处于预发布质量状态,另一个则目前没有维护。 是否有任何插件以可靠的方式在Eclipse中提供混合模式调试功能,还是应该继续使用两个单独的调试器?


在你有支持可用之前,你可以构建一个 Linux 可执行文件并使用 GDB 在 Linux PC 上进行测试。虽然不是一个好主意,但它可以解决问题。 :) - Sandeep
5个回答

5

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

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

安卓软件包来自于在Eclipse的“帮助->安装新软件...”对话框中设置“与之配合使用:”选项。
dl-ssl.google.com/android/eclipse/

较旧的 8.02... CDT 软件包来自将 Work With: 选项设置为 Indigo 发行版软件包。
download.eclipse.org/releases/indigo

如果已安装,则需要在安装旧版本CDT之前删除Android工具和CDT的新版本。 安装了CDT 8.02 ... 版本后,您可以安装Android工具并开始调试。
确保使用构建命令“ndk-build NDK_DEBUG = 1”
可能不需要Autotools,但由于已安装,我列出了它。
请注意,有时浏览代码会有些棘手。

1
我重新激活这个评论来指出Java代码和本地JNI代码可以同时进行调试。要做到这一点,首先以Android本机应用程序的方式进行调试。接下来,在ADT设备选项卡中附加到Android进程(选择进程,然后单击绿色虫子图标)。现在将会触发Java和C++代码中的断点。虽然不是完全无缝的,但已经足够接近了。 - Piklor

3

我认为目前没有任何可用的方法来解决这个问题,但我知道Doug Schaefer非常重视这件事。请关注他的博客以获取更新。


2

能否使用它来调试使用JNI的Java常规应用程序? - Jaime Hablutzel

1

随着新的Android ADT捆绑包(截至2013年5月12日),不再需要旧版8.02软件包。如果您发现自己需要编辑文本文件才能使调试工作正常,那么您正在遵循已经过时的指令。请使用Android ADT和“Debug As-> Android Native Application”。如果设置中尚未完成NDK_DEBUG = 1,则可能仍然需要进行设置。


0
Eclipse Sequoyah 1.0 具备 Android NDK 功能。Eclipse 3.6 发布版和 3.5 将于六月初发布。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接