gdb
(GNU Debugger)是一个强大的源代码级调试工具,用于在 Linux 系统上调试程序。以下是使用 gdb
调试程序的基本步骤:
1. 编译程序
首先,确保你的程序是用调试信息编译的。通常,你需要在编译时添加 -g
选项:
gcc -g -o myprogram myprogram.c
2. 启动 gdb
使用 gdb
启动你的程序:
gdb myprogram
3. 设置断点
在 gdb
提示符下,使用 break
命令设置断点。你可以按函数名、行号或文件名和行号设置断点:
break main break myprogram.c:42
4. 运行程序
使用 run
命令启动程序:
run
如果程序在断点处停止,gdb
会显示相关信息。
5. 查看变量和内存
你可以使用 print
命令查看变量的值:
print variable_name
你也可以使用 info locals
和 info args
查看当前函数的局部变量和参数:
info locals info args
6. 单步执行
使用 step
命令单步执行代码:
step
使用 next
命令单步执行,但不进入函数内部:
next
7. 继续执行
使用 continue
命令继续执行程序,直到下一个断点或程序结束:
continue
8. 查看调用栈
使用 backtrace
命令查看当前的调用栈:
backtrace
9. 修改变量
你可以使用 set
命令修改变量的值:
set variable variable_name = new_value
10. 退出 gdb
使用 quit
命令退出 gdb
:
quit
示例
以下是一个简单的示例,展示了如何使用 gdb
调试一个 C 程序:
// myprogram.c #includevoid foo() { int x = 10; printf("x = %d\n", x); } int main() { foo(); return 0; }
编译程序:
gcc -g -o myprogram myprogram.c
启动 gdb
:
gdb myprogram
设置断点并运行程序:
break foo run
单步执行并查看变量:
step print x
继续执行:
continue
退出 gdb
:
quit
通过这些基本步骤,你可以开始使用 gdb
调试你的 Linux 程序。gdb
还有许多高级功能,如条件断点、监视点、线程调试等,可以根据需要进行深入学习。