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

标签 gdb gdbserver

我目前正在使用 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/

相关文章:

使用 GDB 远程调试器时,linux 系统调用永远不会返回

STM32CubeIDE只能刷一次,没有SWD调试

c++ - 在 NetBeans 中使用远程构建主机时断点如何工作?

debugging - 如何运行单行汇编,然后查看 [R1] 和条件标志

visual-studio - emacs 中的 autoexp.dat 等价物

debugging - 如何搜索在 GDB 的 TUI 模式下打开的文件

bash - 在 docker 容器中安装 openssh-server、g++、gdb 和 gdbserver |用于 Linux 开发的 Visual C++ + Docker

c++ - 如何从这些信息中追踪错误代码

debugging - 使用 gdb 和 gdbserver 远程设置断点