任何简单或简单的方法来debuggingAndroid NDK代码?

我正在寻找一种方法来使用Eclipse轻松debuggingAndroid NDK应用程序中的C代码。 我已经阅读了使用gdb或类似的东西来debugging应用程序的方法,但是我想要的是以某种方式将消息推送到Eclipse的方法。

我正在寻找一个解决scheme,就像在C中使用打印函数一样简单,并在DDMS日志或类似的东西中看到它。 有没有人有这样的经验?

您可以使用Android日志logging工具:

#include <android/log.h> #define APPNAME "MyApp" __android_log_print(ANDROID_LOG_VERBOSE, APPNAME, "The value of 1 + 1 is %d", 1+1); 

确保你也链接到你的Android.mk文件中的日志库:

  LOCAL_LDLIBS := -llog 

最简单的方法可能是将printf()语句redirect到系统日志(基于ADB官方参考手册的“查看stdout和stderr”部分。

在命令行上键入以下3个命令:

 adb shell stop adb shell setprop log.redirect-stdio true adb shell start 

然后,通过查看Eclipse Debugger的“LogCat”窗口,或通过在命令行中键入以下内容,可以查看“printf()”语句的输出:

 adb logcat 

请注意,由于数据在从仿真器或设备传输之前被缓冲,因此您应该清除stdout缓冲区,例如:

 printf("Hello, I am %d years old!\n", 30); fflush(stdout); 

然后您应该看到以“I / stdout:”开头的日志消息

这里解释一个替代解决scheme(使用debugging器):

如何在Eclipse中有效地debugging用JNI包装的C代码? (Android Dev)

ADT 20包含一个NDK插件,它提供了在Eclipse中构build和debuggingNDK项目的支持。 本文档介绍了如何安装和使用NDK插件。 说明非常简单,只有几个步骤。

这是我find的最简单的解决scheme,它为我工作。

注意:如果您正在使用ADT软件包,则只​​需使用安装新软件来安装C开发工具(请参阅屏幕截图),您可以立即转到“使用NDK插件”部分。

c开发工具安装

编辑:看来有一个CDT的Eclipse日食juno http://code.google.com/p/android/issues/detail?id=33788导致eclipse的debugging器无法find断点的问题。; 我使用的解决方法是以debugging模式启动应用程序(不作为本机应用程序debugging,但“常规”debugging),然后在命令行我去我的项目根,并键入ndk-gdb (这创buildgdb.setup文件在obj/local/armeabi文件夹)。 之后,断点照常工作。

在有关上述链接问题的意见中,他们提出了一些其他解决方法,但我没有尝试,因为他们似乎需要更多的努力。