【发布时间】: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