3

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

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

谁能指导我找到一个好的稳定的 gui 调试工具或方法,用于在设备上调试 Android 中的本机代码(我的设备是 htc dream)。

4

3 回答 3

8

没有人喜欢这个答案,但 ndk-gdb 非常可靠。使用起来可能会很痛苦,但一旦你开始使用它就不会那么糟糕了。

基本的调试方法将是:

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

瞧!您的 C 断点将被命中!

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

于 2013-08-15T15:39:19.727 回答
2

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

一些可能会有所帮助的提示。

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

玩得开心!

于 2013-09-15T07:46:41.737 回答
0

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

于 2013-09-16T06:00:26.403 回答