GDB
- GDB(GNU Debugger)是一个功能强大的调试工具,广泛用于调试 C、C++ 和其他编程语言编写的程序。它是 GNU 项目的一部分,专为帮助开发者在程序执行时检测和修复错误设计。GDB 能够控制程序的执行,查看程序内部的状态,帮助定位代码中的问题,并提供详细的信息以供开发者分析。
主要功能
- 设置断点:你可以在代码的特定行、特定函数或满足条件时设置断点,程序运行时会在断点处暂停。
- 单步执行:逐行执行代码,方便查看每行代码执行后的状态。
- 查看变量和内存:可以查看当前程序的变量值、内存内容,甚至修改它们。
- 分析程序崩溃:通过分析程序崩溃时的核心转储文件,帮助开发者找到崩溃的根本原因。
- 跟踪调用堆栈:能够查看函数调用栈,帮助分析程序执行的路径。
GDB 的工作流程
GDB 的调试过程主要包括以下几个步骤
- 编译程序:要使用 GDB 调试,首先需要在编译时添加 -g 选项,这样会生成包含调试信息的可执行文件。
- 启动 GDB:通过 gdb 启动调试,并加载需要调试的程序。
- 设置断点:在程序中指定某些行或函数设置断点,方便在特定位置停止程序。
- 运行程序:在 GDB 中运行程序,程序会在断点处停止。
- 查看状态:在停止的地方可以检查变量、查看内存、打印调用栈等。
- 单步调试:通过逐行或逐步执行代码,追踪程序的运行流程。
- 继续执行:在检查完状态后,继续执行程序,直到下一个断点或程序结束。
使用步骤
- 编译程序时添加调试信息
要调试的程序需要包含调试信息。这是通过在编译时添加 -g 选项来实现的。例如,如果你有一个 C 语言源文件 main.c,你可以用以下命令编译它
gcc -g -o my_program main.c
- 启动 GDB
启动 GDB 并加载你想调试的程序
gdb ./my_program
启动后,你将进入 GDB 的调试界面,可以使用 GDB 提供的各种命令进行调试。
- GDB调试命令大全表
命令 | 说明 |
---|---|
gdb program |
启动 GDB 并调试指定的可执行文件 |
run 或 r |
开始执行程序 |
continue 或 c |
继续执行程序直到下一个断点 |
break 或 b |
在指定位置设置断点,如:break main 或 b 10 (在第10行设置断点) |
step 或 s |
单步执行代码(进入函数内部) |
next 或 n |
单步执行代码(跳过函数调用) |
finish |
执行当前函数直到返回 |
backtrace 或 bt |
显示调用栈 |
print 或 p |
打印变量的值,如:print x |
info locals |
查看当前栈帧的局部变量 |
info args |
查看当前函数的参数 |
set var |
设置变量的值,如:set var x=10 |
display |