用GDB远程调试纯C程序

时间:2015-05-25 01:00:00

标签: android c android-ndk gdb gdbserver

我正在尝试远程调试Android设备上的纯C程序。 Android设备(目标)通过USB连接到主机。

我做的是: 从目标复制以下文件: /system/lib/vendor/lib/system/bin/app_process/system/bin/linker

:定位:

  • gdbserverNDK复制到目标设备
  • 发送了我要调试的exe
  • 使用./gdbserver :5039 exec在目标上运行gdb服务器
    • 这基本上执行了该过程,并得到pid

主机:

  • 启用了端口adb forward tcp:5039 tcp:5039
  • runned:arm-eabi-gcc exec
  • 然后在gdb中:
    • set solib-search-path ...,我之前从目标中提取的库
    • target remote :5039

arm-eabi-gcc可以连接到远程进程,甚至可以继续(c)执行。但是,我无法设置断点。如果我这样做,我会收到以下错误: Cannot access memory at address xxx

我在这里错过了什么吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

所以,在主机,在gdb shell中,在指定远程目标端口之前,我应该输入shared。此命令加载共享符号。

另外,为了编译,我使用了-ggdb