用GDB远程调试纯C程序
Remote debugging of pure C program with GDB
我正在尝试在 Android 设备上远程调试纯 C
程序。
Android 设备(目标)通过 USB 连接到主机。
我所做的是:
从 target 复制以下文件:
/system/lib
、/vendor/lib
、/system/bin/app_process
和 /system/bin/linker
。
目标:
- 已将
gdbserver
从 NDK
复制到目标设备
- 发送了我要调试的
exe
- 使用
./gdbserver :5039 exec
在目标上运行 gdb 服务器
- 这基本上执行了流程,并得到一个
pid
主持人:
- 启用端口
adb forward tcp:5039 tcp:5039
- 已运行:
arm-eabi-gcc exec
.
- 然后在 gdb 中:
set solib-search-path ...
,以及我之前从 target 中提取的库
target remote :5039
arm-eabi-gcc
可以连接到远程进程,甚至可以继续(c
)执行。但是,我无法设置断点。如果这样做,我会收到以下错误:
Cannot access memory at address xxx
.
我是不是漏掉了什么?
谢谢。
因此,在 host 中,在 gdb shell 中,在指定远程目标端口之前,我应该键入 shared
。此命令加载共享符号。
此外,为了编译,我使用了-ggdb
。
我正在尝试在 Android 设备上远程调试纯 C
程序。
Android 设备(目标)通过 USB 连接到主机。
我所做的是:
从 target 复制以下文件:
/system/lib
、/vendor/lib
、/system/bin/app_process
和 /system/bin/linker
。
目标:
- 已将
gdbserver
从NDK
复制到目标设备 - 发送了我要调试的
exe
- 使用
./gdbserver :5039 exec
在目标上运行 gdb 服务器- 这基本上执行了流程,并得到一个
pid
- 这基本上执行了流程,并得到一个
主持人:
- 启用端口
adb forward tcp:5039 tcp:5039
- 已运行:
arm-eabi-gcc exec
. - 然后在 gdb 中:
set solib-search-path ...
,以及我之前从 target 中提取的库
target remote :5039
arm-eabi-gcc
可以连接到远程进程,甚至可以继续(c
)执行。但是,我无法设置断点。如果这样做,我会收到以下错误:
Cannot access memory at address xxx
.
我是不是漏掉了什么?
谢谢。
因此,在 host 中,在 gdb shell 中,在指定远程目标端口之前,我应该键入 shared
。此命令加载共享符号。
此外,为了编译,我使用了-ggdb
。