0%

gdbserver

gdbserver是用于远程gdb的工具, 可以实现远程调试代码。很多嵌入式平台没有安装gdb,可以通过gdbserver启动,然后在网络可达的另一台主机起一个gdb进行远程代码调试。gdbserver占用空间比较小, 很适合在嵌入式系统里使用。

编译

gdbserver是要在目标嵌入式系统运行的程序, 需要使用交叉工具链进行编译

1
2
3
4
5
6
cd gdb/gdbserver
export CC=arm-linux-gcc CXX=arm-linux-gcc
./configure --host=arm-linux --target=arm-linux --prefix=path/to/output

make && make install

我在编译linux-arc-low.c的时候出现一个问题,提示 initializer element is not constant

报错的是一个全局变量的赋值

1
static const uint16_t arc_breakpoint = ntohs(0x3e78);

我把 ntohs删掉了, 目标机器本来就是大端字节序,没必要转换。

使用

拷贝可执行文件和gdbserver到嵌入式系统, 可执行文件需要添加-g选项编译。

1
gdbserver :1234 ./exec_file

调试系统

1
2
/bin/arm-linux-gdb ./exec_file
target remote 192.168.183.127:1234

好了, 后面就是gdb调试了

行动,才不会被动!

欢迎关注个人公众号 微信 -> 搜索 -> fishmwei,沟通交流。