编译生成调试文件:
gcc test1.c -g -o test1
其中-g参数表示用gdb调试,test1.c表示源C文件,test1是生成的可执行文件。
安装gdb:
apt-get install gdb
进入调试:
gdb test1
1.png
开始调试:
start
2.png
- 显示代码:
list
简写用字母l
- 查看函数内容:
list 函数名称
- 查看某行代码:
list 行数
- 执行下一步:
next
简写用字母n
直接回车,还是执行上述最近的一个命令,如果上面的一个命令为n,那回车就相当于又输入了n;如果上面的一个命令为l,那回车就相当于又输入了l。
- 查看变量:
print 变量名
简写:
p 变量名
- 当执行到某个函数的时候,想要进入到该函数:
step
简写用小写字母s
- 设置断点:
break 行号
简写为:
b 行号
- 查看断点信息:
info breakpoints
- 全速运行,遇到断点会停止:
continue
简写为字母c
- 删除断点:
delete breakpoints 断点编号
- 修改变量的值:
set var 变量名 = 值
- 程序调用堆栈:
backtrace
简写为bt,当前函数之前的所有已调用函数列表,每一个都分配一个“帧”,最近调用的函数在0号帧里。
3.png- 切换栈帧:
frame 帧号
切换栈帧之后,就可以查看该栈的变量了。
- 自动显示:
display 变量名
- 取消自动显示:
undisplay 行号
- 查看内存布局:
x / 20 地址
查看buff数组的前20个元素
x / 20 buff
- 程序非正常退出,如何查看错误?
- ulimit -a 查看core文件是否分配大小
- ulimit -c 1024 创建的core文件大小为1204字节
- gcc test2.c -g -o test2 编译链接得到带有-g选项的可执行程序
- ./test2 执行程序,会生成core日志文件
- gdb test2 core 打开日志文件,定位错误信息到具体的代码行数
喜欢本篇博客的简友们,就请来一波点赞,您的每一次关注,将成为我前进的动力,谢谢!
网友评论