繁体   English   中英

Android:调试共享库

[英]Android: debug shared library

我想调试android NDK应用程序,更确切地说 - 我想检查哪些参数( r4-r8 r1-r4寄存器)从apk中的共享库传递给函数。

我尝试过的:

  • 我在设备上运行了gdbserver:1234 --attach
  • 我在PC上运行了来自谷歌的ndk软件包中的arm-linux-androideabi-gdb
  • 我已经设置了solib-search-path和写入目标远程:1234

到现在为止还挺好。 现在我尝试设置断点( 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM