GDB快速入门
GDB全称GNU symbolic debugger,诞生于GNU计划,是一款程序调试器,如果脱离IDE环境,GDB将会是你强大的帮手。
GDB下载和使用
在windows环境中只要下载过C语言应该就会有GDB,这里主要介绍linux环境,也很简单
1 | centos |
调试一个程序,例如我们现在要调试可执行程序a.out
1 | gdb a.out |
此外,如果我们要调试一个C语言的程序,我们需要在gcc编译时增加-g
选项,这个选项告诉编译器添加调试信息
1 | gcc -g main.c |
GDB调试常用命令
下面是一些常用的命令,括号里面是命令的缩写,使用两者都可以
run(r)
启动程序,如果有断点则运行至第一断点,如果没有则运行到结束
next(n)
让程序往下执行一步
list(l)
列出程序源代码及其行号
break(b)
给程序打断点,可以给某一行打断点,也可以给一个函数打断点
1 | b 行号 |
info(i)
查看调试信息,可以查看断点
1 | i b |
continue(c)
向下执行到下一个断点
print(p)
打印变量信息
调试core文件
core文件是内存的映象,当程序崩溃的时候,core文件保存了内存的状态,用于调试。由于core文件略大,默认被限制生成。
我们可以解除这个限制
1 | ulimit -c unlimited |
我们可以写一段会导致崩溃的程序
1 |
|
崩溃后产生core文件,我这里是core.2197
,用GDB调试
1 | gdb a.out core.2197 |
我们可以直接看到崩溃的地方
1 | Program terminated with signal 11, Segmentation fault. |
ok,这就是GDB的简单使用了
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 jking の 博客!