使用前提
程序要用GDB调试,需要添加调试信息。
gcc的-g选项为程序添加调试信息。
例如:gcc –g –o helloworld helloworld.c
启动GDB
gdb [程序名称]
GDB命令的介绍
命令 | 功能 |
file | 装入想要调试的可执行文件 |
kill | 终止正在进行的调试程序 |
list | 列出产生执行文件的源代码的一部分 |
next | 执行一行源代码但不进入函数内部 |
step | 执行一行源代码并可以进入函数内部 |
run | 执行当前被调试的程序 |
c | 继续运行程序 |
quit | 终止gdb |
watch | 使你能监视一个变量的值而不管它何时被改变 |
backtrack | 栈跟踪,查看代码被谁调用 |
查看变量的值 | |
make | 不用退出gdb,就可以重新生成可执行文件 |
shell | 不用退出gdb,就可以使用UNIX shell命令 |
whatis | 显示变量或者函数类型 |
break | 设置断点 |
info break | 显示当前断点信息,包含到达断点处的次数 |
info files | 显示被调试文件的详细信息 |
info func | 显示所有函数名称 |
info local | 显示当前的函数的局部变量 |
info prog | 显示被调试程序的执行状态 |
delete [n] | 删除第n个断点 |
disable [n] | 关闭第n个断点 |
enable [n] | 开启第n个断点 |
ptype | 显示结构定义 |
set variable | 设置变量的值 |
call name(args) | 调用并执行为name,参数为args的函数 |
Finish | 终止当前函数并输出返回值 |
return value | 停止当前函数并返回value给调用者 |
GDB部分命令的使用方法
断点设置
- 依据行号设置断点
break linenum
- 依据函数名设置断点
break funcname
- 依据某个源文件的某行设置断点
break filename:linenum
- 依据某个源文件的某函数名设置断点
break filename:funcname