[英]Android: debug shared library
我想调试android NDK应用程序,更确切地说 - 我想检查哪些参数( r4-r8 r1-r4寄存器)从apk中的共享库传递给函数。
我尝试过的:
到现在为止还挺好。 现在我尝试设置断点( break <function name>
)(来自objdump的函数名),但是我得到了repond: Cannot access memory at address <...>
。 info shared
表示库已加载,这是否意味着我无法在那里设置断点? 或者我做错了什么?
ndk-build skript比你期望的要多得多。
它是复制gdbserver ,一个名为gbd.setup的文件和生成的.so的东西之一
进入一个名为的隐藏文件夹 OBJ / armei /
在那里,您必须添加要调试的库,因为符号是
引用它们。
通过一些adb shell pull-commands将库从设备复制到PC。
我写了一篇关于这个主题的文章: http : //www.professional-android-development.com/articles/android-ndk-large-c-projects
将库放入正确的文件夹时,您可以设置断点。
不过,由于某些内部原因,他们可能会失败。
在这种情况下运行ndk-gdb --start(第一次尝试也将失败),强制应用程序关闭并重新运行ndk-gdb --start(这次不强制关闭应用程序)。
“无法访问地址<...>处的内存”通常表示PC上的.so文件与Android上的.so文件不匹配。 你重新编译并重新安装了吗?
顺便问一下,你没有使用“ndk-gdb”的原因是什么? 这是一个脚本(NDK的一部分),可以为您处理所有的血腥细节。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.