在主机上编译程序时需要加上 -g 选项表示可以调试。
book@100ask:~$ arm-buildroot-linux-gnueabihf-gcc test.c -g -o test
将编译生成的程序拷贝到开发板上,以ssh服务为例,已知开发板ip地址为192.168.0.8,使用命令将程序拷贝到开发板/root目录下:
book@100ask:~$ scp test root@192.168.0.8:/root
切换到开发板终端,并通过gdbserver在指定端口<12345>建立服务,同时阻塞进行监听,如下所示:
[root@100ask:/root]# gdbserver :12345 test
启动主机的gdb程序以进行连接,命令如下所示:
book@100ask:~$ arm-buildroot-linux-gnueabihf-gdb test
此时,当出现以下提示时:
Reading symbols from test…done.
输入命令:
target remote 192.168.0.8:12345
表示连接至远程GDB服务192.168.0.8,端口12345,回车后即可发现连接成功。
GDB常用命令参考
命令 简写形式 说明
backtrace bt、where 显示 backtrace
break b 设置断点
continue c、cont 继续运行
delete d 删除断点
finish 运行到函数结束
info breakpoints 显示断点信息
next n 执行下一行
print p 显示表达式
run r 运行程序
step s 一次执行一行,包括函数内部
x 显示内存内容
until u 执行到指定行
directory dir 插入目录
disable dis 禁用断点
down do 在当前调用的栈帧中选择要显示的栈帧
edit e 编辑文件或函数
frame f 选择要显示的栈帧
forward-search fo 向前搜索
generate-core-file gcore 生成内核转储
help h 显示帮助一览
info i 显示信息
list l 显示函数或行
nexti ni 执行下一行(以汇编代码为单位)
print-object po 显示目标信息
sharedlibrary share 加载共享库的符号
setpi si 执行下一行