目录

嵌入式-gdb-gdbserver-终极总结

目录

嵌入式 gdb gdbserver 终极总结

gdb

IAR MDK VS

gdb 来一行行的 运行程序、单步执行、跳入/跳出函数、设置断点、查看变量

强大的程序调试工具

Linux 系统,比如 ubuntu、  直接运行 gdb 来调试程序

直接在嵌入式系统中运行 gdb 不太现实(性能强大的嵌入式芯片可以这么做)。

嵌入式系统中一般在 PC 端运行 gdb 工具,源码也是在 PC 端,源码对应的可执行文件放到开发板中运行。

我们需要在开发板中运行 gdbserver

通过网络与 PC 端 的 gdb 进行通信。

要想在 PC 上通过 gdb 调试嵌入式程序,那么需要两个东西:gdb 和gdbserver,其中 gdb 是运行在 PC 上的,gdbserver 需要我们移植到开发板上。

一般交叉编译已经自带了 gdb 和 gdbserver,因此可以不用移植,直接使用交叉编译器自带的即可。

果交叉编译器自带了 gdb 和 gdbserver 的话只需要将 gdbserver 拷贝到开发板根文件系统的/bin 目录下

gdb 官网上获取源码

首先编译 gdb,gdb 是运行在 PC 端的程序,gdb 编译的时候需要进行配置

植 gdbserver,gdbserver 是在开发板上运行的,因此要交叉编译。

gdbserver 软件  /usr/bin 目录下 gdbserver –version //查看版本号

arm-linux-gnueabihf-gcc gdbtest.c -o gdbtest -g //编译测试程序,注意-g 选项

完成以后将得到的 gdbtest 可执行文件发送到开发板中。

gdbserver 192.168.1.253:2001 gdbtest // 启动开发板上的 gdbserver

192.168.1.253 为调试机的 IP 地址,也就是 ubuntu 的 IP 地址,2001 是端口号,

可以任意给一个端口号,gdbtest 是要调试的可执行文件。

上位机

arm-linux-gdb gdbtest

target remote 192.168.1.251:2001 //连接到开发板上

l l出所有程序源码

b b main 或 break main  第 11 行设置断点

c c 命令用于运行到断点处,输入 c 命令程序就会运行,直到下一个断点处

s s 命令(step)是单步运行执行,此函数会进入到函数里面。

n n 命令(next)也是单步运行,但是 n 命令不会进入到函数里面

p 命令(print)用于打印某个变量值。

q 命令(quit)用于退出调试,开发板上的 gdbserver 也会停止。