在编译时加上-g选项,生成的目标文件才能用gdb进行调试。
gcc -g main.c -o main
gdb main
gdb基本指令
command | 描述 |
---|---|
start | 开始执行程序,停在main函数第一行语句前面等待命令 |
finish | 执行到当前函数返回,然后停下来等待命令 |
step(或s) | 执行下一行语句,如果有函数调用则进入到函数中 |
next(或n) | 执行下一行语句 |
list(或l) | 列出源代码,接着上次的位置往下列,每次列10行 |
list + 行号 | 列出从第几行开始的源代码 |
list + 函数名 | 列出某个函数的源代码 |
info(货i) locals | 查看当前栈帧局部变量的值 |
backtrace(或bt) | 查看各级函数调用及参数 |
frame(或f)+ 帧编号 | 选择栈帧 |
print(或p) | 打印表达式的值,通过表达式可以修改变量的值或者调用函数 |
set var | 修改变量的值 |
break(或b) 行号 | 在某一行设置断点 |
break 函数名 | 在某个函数开头设断点 |
break if | 设置条件断点 |
continue(或c) | 从当前位置开始连续而非单步执行程序 |
delete breakpoints | 删除断点 |
dispalay 变量名 | 跟踪查看一个变量,每次停下来都显示它的值 |
disable breakpoints | 禁用断点 |
enable breakpoints | 启用断点 |
info(或i) breakpoints | 查看当前设置了哪些断点 |
run(或r) | 从头开始连续而非单步执行程序 |
undisplay | 取消对先前设置的那些变量跟踪 |
watch | 设置观察点 |
info(或i) watchpoints | 查看当前设置了哪些观察点 |
x | 从某个位置开始打印存储器的一段内容,全部当成字节来看,而不区分哪些字节属于哪些变量 |
版权声明:本文为allenxu1314原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。