0.下载GDB
apt-get install gdb
1. 编译程序以支持调试
在使用 GDB 调试之前。这可以通过在编译时添加 -g
选项来实现:
g++ -g -o my_program main.cpp
-g
选项会在编译过程中生成调试信息,使 GDB 能够解析代码中的变量、行号等。
2. 启动 GDB
使用以下命令启动 GDB,并加载你的程序:
gdb ./my_program
这将进入 GDB 调试环境,你可以开始进行调试操作。
3. 运行程序
在 GDB 中,你可以使用 run
命令来启动程序:
(gdb) run
如果程序需要命令行参数,可以将它们附加在 run
后面。例如:
(gdb) run arg1 arg2
4. 设置断点
断点允许你在程序运行到特定行时暂停执行。使用 break
命令设置断点:
(gdb) break main
以上命令将在 main
函数的开头设置一个断点。你也可以通过指定行号或文件名来设置断点:
(gdb) break 15
(gdb) break myfile.cpp:20
5. 查看变量
在程序暂停执行时,你可以查看变量的值:
(gdb) print var_name
例如,如果你想查看变量 x
的值,可以使用:
(gdb) print x
你还可以使用 display
命令让 GDB 在每次暂停时自动显示变量的值:
(gdb) display x
6. 单步执行
GDB 提供了多种单步执行的方式:
step
(或s
): 执行当前行并进入函数内部。next
(或n
): 执行当前行,但不进入函数内部。continue
(或c
): 继续执行程序,直到遇到下一个断点。
7. 查看当前代码
使用 list
命令可以查看当前执行的代码上下文:
(gdb) list
你也可以指定行号或函数名来查看特定位置的代码:
(gdb) list 10
(gdb) list main
8. 查看调用栈
调用栈可以帮助你了解当前函数是从哪里被调用的。使用 backtrace
命令查看调用栈:
(gdb) backtrace
9. 修改变量值
在调试过程中,你还可以修改变量的值,以观察不同输入对程序执行的影响:
(gdb) set var_name = value
例如,设置 x
为 5:
(gdb) set x = 5
10. 退出 GDB
完成调试后,你可以使用 quit
命令退出 GDB:
(gdb) quit
GDB 会提示你是否要终止正在调试的程序,你可以选择 y
或 n
。