有任何简单的登录Android NDK代码的方法吗?


77

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

我正在寻找一种简单的解决方案,就像在C语言中使用打印功能并在DDMS日志或类似工具中看到它一样。有没有人有这样做的经验?

Answers:


138

您可以使用Android日志记录功能:

确保您还链接到Android.mk文件中的日志记录库:


1
如果在Android Studio中使用新的Gradle NDK集成(Gradle实验版),则需要将此行ldLibs.addAll([['android','log'])添加到android.ndk选项中。
Sadegh Ghanbari '16

19

到目前为止,还没有人发布有关不同日志级别的信息。答案是尝试使日志记录“图片”满

用法:

如下所示链接Android日志库。

Android.mk

CMakeLists.txt

进一步阅读:日志记录


13

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

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

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

请注意,由于数据是在从仿真器或设备传输之前进行缓冲的,因此您一定要刷新标准输出缓冲区,例如:

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


4
请注意,此解决方案破坏了JUnit测试。请参阅:stackoverflow.com/questions/3462850/…–
塞巴斯蒂安·克里斯曼斯基


2

ADT 20包含一个NDK插件,该插件为在Eclipse中构建和调试NDK项目提供支持。本文档介绍了如何安装和使用NDK插件。说明非常简单,仅需几个步骤。

这是我找到的最简单的解决方案,对我有用。

注意:如果使用的是ADT捆绑包,则只需安装C开发工具以及安装新软件(请参见屏幕截图),即可立即转到“使用NDK插件”部分。

c dev工具安装

编辑: eclipse juno http://code.google.com/p/android/issues/detail?id=33788中的CDT似乎有问题,导致eclipse的调试器无法找到断点。我使用的解决方法是在调试模式下启动应用程序(不是作为本机应用程序调试,而是“常规”调试),然后在命令行中转到项目根目录并键入ndk-gdb(这将gdb.setupobj/local/armeabi文件夹中创建文件)。之后,断点照常工作。

在上面链接中与该问题有关的评论中,他们提出了其他解决方法,但我没有尝试过,因为它们似乎需要付出更多的努力。


2

您也可以使用一点

用法:


0

对于那些在挣扎中的人

不起作用,只需在每个之后添加

不知道为什么,但是对我有用。

干杯!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.