1.GDB简介
gdb 工具是 GNU 项目调试器,基于命令行。和其他的调试器一样,我们可以使用 gdb 来一 行行的运行程序、单步执行、跳入/跳出函数、设置断点、查看变量等等,它是 UNIX/LINUX 操 作系统下强大的程序调试工具。gdb 支持多种语言,包括 Ada、汇编、C/C++、D、Fortran、GO、 Objective-C、OpenCL、Modula-2、Pascal 和 Rust。关于 gdb 更多详细的信息请到 gdb 官网查阅, gdb 官网地址为: www.gnu.org。 一般的桌面 Linux 系统,比如 ubuntu、centos 等,我们可以直接运行 gdb 来调试程序。但 是嵌入式中芯片性能一般比较弱,所以直接在嵌入式系统中运行 gdb 不太现实(性能强大的嵌入 式芯片可以这么做)。嵌入式系统中一般在 PC 端运行 gdb 工具,源码也是在 PC 端,源码对应 的可执行文件放到开发板中运行。为此我们需要在开发板中运行 gdbserver,通过网络与 PC 端 的 gdb 进行通信。因此要想在 PC 上通过 gdb 调试嵌入式程序,那么需要两个东西:gdb 和 gdbserver,其中 gdb 是运行在 PC 上的,gdbserver 需要我们移植到开发板上。 2.GDB移植 可以使用系统本省自带的gdb工具进行测试,如果没有需要自己重安装,本次使用系统自带的工具链。 将交叉编译器自带的 gdb 和 gdbserver贝到开发板根文件系统的/bin 目录下: 3.GDB调试 接下来使用一个实例程序进行GDB调试: 编译,在正常的编译命令后面加入一个-g即可。生产可执行文件:
将可执行文件添加到开发板,添加可执行权限,并且启动GDB调试,这个过程需要开发板和虚拟机的网络能ping通 接下来进入虚拟机,进行调试,如下: 输入:target remote 192.168.31.111:2000连接开发板,查看开发板输出,可以发现已经连接成功: 输入调试命令进行调试,首先输入l 打断点,运行: 当然还有其他命令,有兴趣的小伙伴可以继续探索。
|