【问题标题】:Android Native C++ Debugging: Stepping causes "no source available"Android Native C++ 调试:步进导致“无可用源”
【发布时间】:2013-08-19 15:05:16
【问题描述】:

我正在尝试在使用 cocos2d-x 引擎的 android 上调试本机 C++ 应用程序。目前,我的 C++ 断点在调试器完成后被完美命中,但每当我尝试单步执行代码时,我会立即在源代码视图中收到“无可用源代码”消息。

我将“调试为 - Android 原生应用程序”与 ADK 捆绑包和 NDK 一起使用。我已将NDK_DEBUG=1 添加到我的构建命令并将android:debuggable="true" 添加到我的清单xml。

我还缺少其他东西来使我的调试步进工作吗?

提前致谢!

更新:当我开始调试时,我还在控制台中收到以下警告:

warning: sh_link not set for section `.ARM.exidx'
warning: Could not load shared library symbols for 66 libraries, e.g. libstdc++.so.
Use the "info sharedlibrary" command to see the complete listing.
Do you need "set solib-search-path" or "set sysroot"?
warning: Breakpoint address adjusted from 0xb00058f5 to 0xb00058f4.

我曾尝试在 cygwin 终端中执行 set solib-search-path /cygdrive/c/mygameproject/android/obj/local/armeabi:/cygdrive/c/mygameproject/android/obj/local/armeabi/objs-debug,但这似乎对手头的警告或问题没有影响。

【问题讨论】:

  • 您需要通过 ndk_gdb 应用程序进行调试,而不是 Eclipse。将两者结合起来可能是可能的,但这并不容易——这些年来我已经看到了十几套指令,但从来没有得到任何工作。您也许可以将该 gdb 版本包装在 ddd 中以提供图形应用程序,我还没有尝试过。我只是在 Android 上使用 C++ 的日志调试,真是太痛苦了。
  • 您在启动时收到的警告与我在调试时收到的警告非常相似,我忽略了它。
  • 曾经有一两次我能够成功地单步返回或单步跳过,但不久之后,当我尝试单步执行 pthread 调用时,我似乎失去了调试环境,即使我从来没有使用“介入”...
  • 我在调试时也遇到过类似的问题,但现在我已经切换到 Nvidia 的 Android 调试管理器,我可以说它比您使用的更稳定。如果您的问题仍然存在,您可以查看一下,易于设置和使用。

标签: android debugging android-ndk gdb


【解决方案1】:

我们还没有看到确切的问题,但我们已经在 Apportable SDK 中以二进制形式提供的 gdb 的 Apportable fork 和 github 的源代码中修复了类似的问题。

调试 cocos2d 对我们的用户来说是一个常见的用例,并且没有出现步进问题。

使用纯 NDK 应用程序可能需要一些麻烦,但应该不会太糟糕。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-30
    • 2020-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-24
    • 2017-02-15
    相关资源
    最近更新 更多