用GDB远程调试纯C程序

Pas*_*lis 5 c android gdb android-ndk gdbserver

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

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

目标:

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

主办:

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

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

我在这里错过了什么吗?

谢谢.

Pas*_*lis 0

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

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