如何调试本地的Android应用程序?

7
我已安装 Sequoyah Android Native Support,现在可以执行调试模式。 我在调用本机方法的同一行上设置了断点,因此当我执行调试Java模式时,eclipse会停在这一行,我执行'ndk-gdb',然后启动C / C ++调试模式,我看到控制台有反应。 但是,如何放置C断点? 因为我的C代码是.so库,所以无法在该文件中设置断点。 我有一个JNI文件夹,其中包含.c和.h文件,但是当我设置断点时不会停止。 Eclipse日志识别断点,但打印错误。
break-insert com_example_pruebaffmpeg_MainActivity.c:4323 error,msg =“未加载符号表。使用“file”命令。”

你是否在编译C代码时包含了调试信息/符号?如果你使用GCC编译,请确保在编译和链接步骤中都包含“-g”选项。 - Aleks G
我不知道你解释给我的是什么。我正在使用ndk-build编译我的C代码并获得.so库。然后我在Eclipse中使用NDK工具运行Android项目。 - beni
1
对于ndk-build,您需要采取其他步骤来构建调试符号。请查看此问题 - Aleks G
1个回答

1

您尝试过卸载Sequoyah并仅使用ADT吗?从20版本开始,Eclipse ADT插件可以比旧的Sequoyah方式更轻松、可靠地调试NDK项目。


我已经卸载了Sequoyah,并尝试使用ADT启动调试器,但它无法运行。你能否解释得更详细一些或者提供一个链接? - beni
我正在按照这个链接(http://tools.android.com/recent/usingthendkplugin)上的说明进行操作,但调试器无法工作。 - beni
警告:在解析目标库列表时(位于第2行):未定义/ system / bin / linker的段。 BFD:/ home / beni / workspace / Prueba / obj / local / armeabi-v7a / linker:警告:未为部分“.ARM.exidx”设置sh_link。 警告:无法加载63个库的共享库符号,例如libstdc ++。so. 使用“info sharedlibrary”命令以查看完整列表。 您需要“set solib-search-path”或“set sysroot”吗? 没有加载符号表。使用“文件”命令。 - beni
如果你在Android 4.2.x上遇到错误:“warning: sh_link not set for section `.ARM.exidx'”“WARNING: Could not load native library: Cannot load library: soinfo_relocate(linker.cpp:975): cannot locate symbol "__exidx_end" referenced by [...]”,请尝试按照这里的说明操作:http://stackoverflow.com/a/14501998/313113 - Alex Bitek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接