在Android中调试本机代码的工具有哪些?

时间:2013-06-12 15:50:06

标签: android eclipse android-ndk adt ubuntu-12.10

我已经对android的csipsimple应用程序进行了一些更改,我想调试它的本机代码。我正在使用ADT软件包v21.1在Ubuntu 12.10下开发(eclipse 3.7,cdt 8.1)。

我在eclipse下遇到this本地调试教程,但它对我不起作用(请参阅我的问题Debugging native code in android under eclipse fails)。 我现在正在尝试ARM DS-5解决方案而没有额外的运气。 我也遇到了这个nvidia solution但不确定是否值得付出努力。 我没有尝试过Sequoyah插件,因为它看起来已经过时了。

任何人都可以指导我使用一个好的稳定gui调试工具或方法在设备上调试Android中的本机代码(我的设备是htc梦想)。

3 个答案:

答案 0 :(得分:8)

没有人喜欢这个答案,但是ndk-gdb非常可靠。这可能是一种痛苦,但一旦你开始变得不那么糟糕。

基本的调试方法是:

  1. 在Eclipse中设置加载本机库的行的断点。
  2. 在Eclipse中开始调试
  3. 跳过加载库行。不要恢复!!
  4. 在命令行上,启动ndk-gdb
  5. 在gdb中设置断点。输入“c”表示继续
  6. 返回Eclipse并继续
  7. 瞧!您的C断点将被击中!

    当然你需要在终端中设置所有内容......如果你不熟悉,我建议打印一份gdb备忘单。

答案 1 :(得分:2)

在Eclipse中调试本机代码很长一段时间(年份++)只使用默认的android工具。

一些可能有用的提示。

  • 将jni内容保留在主应用程序项目中(而不是单独的库项目)
  • 在添加任何本机代码之前先创建一个正在运行的java应用程序
  • “添加本机支持”,只显示它生成的默认CPP文件,然后关闭并重新打开eclipse(它应该自动尝试并构建本机端)。本机代码需要至少成功构建一次才能让所有人满意。一旦成功,然后添加任何其他来源并更新MK文件等。
  • 终端是你的朋友......而且ndk-gdb也是!
  • 在加载本机库(允许调试器附加)后添加'挂10'...延迟10秒(在java中)
  • 慢慢逐步执行代码以使网络通信能够跟上
  • 减少ABI的数量,以免混淆调试器

玩得开心!

答案 2 :(得分:0)

可能不是最好的解决方案,因为我还没有尝试过其他解决方案,但是到目前为止,Nvidia Debug Manager for Android非常好用且易于使用。它附带了Tegra Android开发包,可以从以下网址获取:https://developer.nvidia.com/tegra-android-development-pack