用 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 是进不去的,因为没有源代码。自己定义的函数可以进入 |
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 | 显示源代码 |