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

Tim*_*ger 21 java eclipse debugging java-native-interface android-ndk

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

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

R S*_*ltz 5

对于那些希望在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
Run Code Online (Sandbox Code Playgroud)

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

dl-ssl.google.com/android/eclipse/
Run Code Online (Sandbox Code Playgroud)

较旧的8.02 ... CDT软件包来自于将Indice版本包的Work With:选项设置为.

download.eclipse.org/releases/indigo
Run Code Online (Sandbox Code Playgroud)

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

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

可能不需要Autotools,但由于它已安装,我已将其列出.

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


Jes*_*erE 3

我认为今天没有任何可用的方法可以解决这个问题,但我知道道格·谢弗(Doug Schaefer)在他想要完成的事情清单上占据了相当高的位置。请关注他的博客以获取相关更新。