gdbserver是用于远程gdb的工具, 可以实现远程调试代码。很多嵌入式平台没有安装gdb,可以通过gdbserver启动,然后在网络可达的另一台主机起一个gdb进行远程代码调试。gdbserver占用空间比较小, 很适合在嵌入式系统里使用。
编译
gdbserver是要在目标嵌入式系统运行的程序, 需要使用交叉工具链进行编译
1 | cd gdb/gdbserver |
我在编译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 | /bin/arm-linux-gdb ./exec_file |
好了, 后面就是gdb调试了
行动,才不会被动!
欢迎关注个人公众号 微信 -> 搜索 -> fishmwei,沟通交流。