在学习单片机的时候我们可以通过集成式 IDE 来进行调试,比如 MDK、IAR 等。在嵌入
式 linux 领域是否也可以进行调试呢?答案肯定是可以的,在嵌入式 linux 领域我们最常用的就
是 GDB 调试工具,通过 GDB 来调试嵌入式 C 程序。本章我们首先学习如何搭建嵌入式 Linux
的 GDB 调试环境,然后讲解如何使用 GDB 工具调试 C 程序。
B3.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 需要我们移植到开发板上。
在学习单片机的时候我们可以通过集成式 IDE 来进行调试,比如 MDK、IAR 等。在嵌入
式 linux 领域是否也可以进行调试呢?答案肯定是可以的,在嵌入式 linux 领域我们最常用的就
是 GDB 调试工具,通过 GDB 来调试嵌入式 C 程序。本章我们首先学习如何搭建嵌入式 Linux
的 GDB 调试环境,然后讲解如何使用 GDB 工具调试 C 程序。
B3.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 需要我们移植到开发板上。