gdb
转换
Linux默认release版本,故要先调整为debug版本,加-g
gcc mytest.c -o test.c_g -g//debug版本
gdb test.c_g//调试
调试
- 进入gdb后,首先将源代码呈现出来:
line 0(简写:l 0)
从0行开始将代码完整呈现
- 打断点:
breakpoint n(简写 b n)n为要打断点的行数
打断点在第n行
- 查看断点
info b
- 删除断点
delete n(简写d n)
这里的n是指断点编号,并不是行数
- 运行程序开始调试
run(简写:r)
r之后直接跳到断点处,若无断点,运行完程序结束
- 逐语句与逐过程
skip(简写:s) 逐语句往下运行代码(类似vs下的F11)
next(简写:n) 逐过程往下运行代码(类似vs下的F10)
- 查看堆栈信息
backtrace(简写:bt)
打印当前的函数调用栈的所有信息
- 查看/隐藏变量的值(常显示)
display expr(无简写,expr 表示要查看的目标变量或表达式)
使用 display 命令查看变量或表达式的值,每当程序暂停执行(例如单步执行)时,gdb调试器都会自动帮我们打印出来,因此,当我们想频繁查看某个变量或表达式的值从而观察它的变化情况时,使用 display 命令可以一劳永逸。(类似vs监视窗口)
undisplay n(无简写,n 表示要删除查看的目标变量或表达式对应的编号)
- 直接跳转(运行)到下一个断点
continue(简写:c)
从当前位置跳转(即快速运行)到下一个断点
- 执行完当前函数
finish
执行到子函数内时,可以执行完子函数余下部分,并返回到上一层函数