我目前正在使用 GDB,想要调试 Android 中的 native 处理器,特别是/system/bin/lmkd。
但是我在调用该处理器后如何停止 GDB 时遇到了麻烦。
这是我迄今为止尝试过的:
Android端:
./gdbserver tcp:5039 /system/bin/lmkd
客户端:
gdb
target remote localhost:5039
从这里,我输入了info共享
,这样我就可以获得 native 处理器的基址,设置断点,继续,调用处理器,然后它就会停止。
但是info shared
仅显示共享对象文件的地址。
关于如何在我不知道地址的处理器上设置断点有什么建议吗?
最佳答案
您应该能够使用 gdb 中的 info proc mappings
找到可执行文件本身在进程地址空间中的映射位置。如果您知道需要断点的相对偏移量,则可以将其添加到其中的某些内容中以获得要中断的最终虚拟地址。
但听起来您可能在这个过程中获取断点方面找错了方向;不能通过符号名称设置断点吗?你能用调试符号重建二进制文件吗?
关于gdb - 如何使用GDB查找Android目标处理器的基地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52228861/