gdb调试
假设我们有一个简单的 C 程序 hello.c,其内容如下:
#include <stdio.h>
int main() {
int a = 10;
int b = 20;
int sum = a + b;
printf("Sum of %d and %d is %d\n", a, b, sum);
return 0;
}
我们想要使用 GDB 调试这个程序,以下是一个基本的调试过程:
- 编译程序并启动 GDB:
首先,我们使用 GCC 编译 hello.c 程序,并通过 -g 选项添加调试信息。然后,使用 GDB 启动可执行文件。
gcc -g -o hello hello.c
gdb ./hello
- 设置断点:
在 GDB 中,我们可以设置断点以在程序执行到指定位置时停止。在 main 函数的第一行设置一个断点。
(gdb) break main
- 运行程序:
运行程序以启动调试会话。程序将在达到第一个断点时暂停。
(gdb) run
- 单步执行:
使用 next 命令逐行执行程序。
(gdb) next
- 打印变量:
使用 print 命令来查看变量的值。
(gdb) print a
- 查看堆栈:
使用 backtrace 命令查看当前的调用堆栈。
(gdb) backtrace
- 继续执行:
如果想继续执行程序直到下一个断点或程序结束,可以使用 continue 命令。
(gdb) continue
- 退出 GDB:
当调试完成后,使用 quit 命令退出 GDB。
(gdb) quit