C语言GDB调试

用 gcc 编译的时候,编译后的可执行文件不会包含源程序代码。如果想要编译后的文件用于调试,需要加 -g 参数,例如

1
gcc -g -o book113 book113.c

编译完成后在终端输入

1
gdb book113

即可进行调试

命令 缩写 说明
set args 设置主程序的参数,方法为 set args arg1 arg2 ...
如果参数中包含特殊符号,用 “” 把参数包含进来,即 set args "arg1" "arg2" ...
break b 设置断点,b 20表示在第20行设置断点。可以设置多个断点
run r 开始运行程序,运行到断点位置停下来。如果没有遇到断点,程序一直运行下去
next n 执行当前语句,如果该语句为函数调用,不会进入函数内部执行
step s 执行当前语句,如果该语句为函数调用,则进入函数执行其中的第一条语句
如果是库函数或第三方提供的函数,用 s 是进不去的,因为没有源代码。自己定义的函数可以进入
print p 显示变量值,例如:p name 表示显示变量 name 的值
continue c 继续程序的运行,直到遇到下一个断点。
set var name=value 设置变量的值,假设程序有两个变量: int ii; char name[21];
set var ii=10 把 ii 的值设置为 10;
set var name="西施" 把 name 的值设置为“西施”。
quit q 退出gdb环境
list l 显示源代码