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

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

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


答案 1

对于那些希望在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中设置断点,然后调试为->Android本机应用程序。不幸的是,您无法同时调试java和C。如果问题出在 Java 中,并且您要进行调试,请单击“调试为 -> Android 应用程序”来执行此操作。

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

  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 Help->Install New Software... 对话框中的“Work With: ”选项,以

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

较老的8.02...CDT 软件包来自将“使用:”选项设置为 Indigo 发布软件包。

download.eclipse.org/releases/indigo

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

确保使用生成命令“ndk-生成NDK_DEBUG=1”

自动工具可能不是必需的,但由于它已安装,我已将其列出。

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


答案 2

我不认为今天有什么可以解决这个问题的,但我知道Doug Schaefer在他想要完成的事情清单上占有很高的位置。请关注他的博客以获取更新。