如何使用GDB查找Android目标处理器的基地址

Car*_*ard 9 gdb gdbserver

我目前正在玩GDB,想要调试Android中的本机处理器,特别是/ system/bin/lmkd.

但是,一旦调用该处理器,我就无法停止GDB.

这是我到目前为止所尝试的:

Android的一面:

./gdbserver tcp:5039 /system/bin/lmkd
Run Code Online (Sandbox Code Playgroud)

客户端:

gdb

target remote localhost:5039
Run Code Online (Sandbox Code Playgroud)

从这里,我输入info shared,所以我可以得到本机处理器的基地址,设置断点,继续,调用处理器,然后它会停止.

info shared只显示共享对象文件的地址.

关于如何在处理器上设置我不知道地址的断点的任何建议?

int*_*ect 0

您应该能够info proc mappings在 gdb 中找到可执行文件本身在进程地址空间中的映射位置。如果您知道需要断点的相对偏移量,则可以将其添加到其中的某些内容中以获得要中断的最终虚拟地址。

但听起来你可能在这个过程中获取断点方面找错了方向;不能通过符号名称设置断点吗?您可以使用调试符号重建二进制文件吗?