2024年6月2日发(作者:)

UNIX下命令行调试工具GDB使用教程

GDB(GNU调试器)是UNIX和类UNIX系统上最常用的命令行调试工

具之一、它允许程序员在运行时利用各种功能进行程序调试,比如设置断

点、单步执行、查看变量值等。本教程将介绍UNIX下GDB的基本使用方

法。

1.安装GDB

GDB通常已经预装在大多数UNIX系统中。如果没有安装,可以使用

包管理器安装,比如`apt`, `yum`, `dnf`等。示例命令(以

Debian/Ubuntu为例):

```

sudo apt-get install gdb

```

2.编译可调试的程序

编译时需要启用调试信息,以便GDB能够准确地定位代码。在编译时

使用`-g`选项,示例命令:

```

gcc -g program.c -o program

```

3.启动GDB

在命令行中输入`gdb`命令,然后指定需要调试的可执行文件,示例

命令:

```

gdb program

```

4.设置断点

断点是一种在程序执行到指定位置时暂停执行的机制,可以用来检查

程序在该位置的状态。在GDB提示符下输入`break`或`b`命令,然后指定

需要设置断点的行数或函数名。示例命令:

```

b main // 在main函数设置断点

b file.c:10 // 在file.c文件的第10行设置断点

```

5.运行程序

在GDB提示符下输入`run`或`r`命令,然后按回车键执行程序。程序

执行到第一个断点时将会暂停执行。示例命令:

```

run

```

6.单步执行

单步执行是一种逐行执行程序的方式,可以帮助程序员了解程序的执

行过程。在GDB提示符下输入`step`或`s`命令,可以逐行执行程序。示

例命令:

```

step // 执行当前行,并进入函数调用

next // 执行当前行,不进入函数调用

finish // 运行至当前函数结束,并暂停

```

7.查看变量值

在GDB提示符下输入`print`或`p`命令,可以查看当前变量的值。示

例命令:

```

print var // 查看变量var的值

print *ptr // 查看指针ptr指向的内存的值

```

8.修改变量值

在调试过程中,有时需要修改变量的值以测试程序行为。在GDB提示

符下输入`set`命令,可以修改变量的值。示例命令:

```

set var = 10 // 修改变量var的值为10

set *ptr = 20 // 修改指针ptr指向的内存的值为20

```

9.查看栈信息

在程序运行过程中,栈存储了函数调用的序列。在GDB提示符下输入

`backtrace`或`bt`命令,可以查看当前的栈信息。示例命令:

```

backtrace // 打印栈帧信息

frame n // 切换至第n个栈帧

```

10.继续执行程序

在程序暂停执行时,可以使用`continue`或`c`命令继续执行程序直

到遇到下一个断点或程序结束。示例命令:

```

continue

```