Linux下C语言调试:使用GDB,调试的文件必须是debug版本可执行文件,以main.c为例,
gcc -o main main.c -g(生成debug版本,debug才可调试)
进入GDB:gdb main
l:显示代码
list main.c:num:显示指定文件的代码n行
b num:将断点添加到num行
b fun:将断点添加到fun入口处
info b:查看断点内容
d bpnum:删除断点
disable bpnum:将断点设置为无效(不加断点序号:设置所有断点)
enable bpnum:将指定断点设置有效(同上)
r:运行程序到第一个断点处
s:进入将要被调用的函数运行
n:执行下一行
c:执行到下一个断点(逻辑位置)
p val:查看变量值
display val:监视变量值
undisplay val:取消监视变量的值
p &val:查看变量地址
p str:显示数组所有元素
p *str@len:通过指向数组的指针显示数组元素
bt:显示堆栈调用
ptype::显示变量类型
info f:当前栈层的详细信息
info locals:打印出当前函数中所有局部变量及其值
info catch:打印出当前的函数中的异常处理信息
info display:查看display设置的自动显示信息
info registers:查看寄存器的情况
info all-registers:查看所有寄存器的情况(包括浮点寄存器)
printf i=6:修改被调试时运行的变量值
set language:查看gdb所支持的语言类型
info frame:查看当前函数的程序语言
info source:查看当前文件的程序语言
截图说明(有图有真相)