2023年9月22日,周五晚上
GDB的官方文档:
GDB Documentation (sourceware.org)
使用GDB的基本步骤
编译程序时加入调试信息
gcc -g code.c -o code
运行GDB
gdb code
设置断点
break main
或
break 行号
运行程序
run
单步执行
next
或
step
或
按enter键,相当于输入next
在GDB中,next和step这两个命令的主要区别在于:
-
next:执行完当前行代码后,直接跳到下一行代码开始执行。对函数调用,会直接进入函数体执行,不进入函数体内部代码。
-
step:执行当前行代码后,如果当前行有函数调用,会进入该函数体内部的第一行代码设置断点并执行。对于函数调用,会进入函数体内部单步执行。
简单来说:
-
next会直接跳过函数调用,不进入函数体内部单步执行。
-
step会进入函数体内部,对函数内部每一行代码都单独执行。
一般来说,next更快,step更细致。选择使用next还是step,取决于你需要调试的细节程度。
查看变量值
print 变量名
继续运行直到下一个断点
continue
结束调试,退出GDB
quit
其他常用命令
- list :查看源代码
- backtrace :查看调用栈
- clear :清除断点
- info breakpoints :查看断点信息
- help :获取帮助