首先我们知道程序有两个版本:Release版本和Debug版本; Debug为调试版本,它包含调试信息,所以程序体积相对于Release版本比较大,并且不作任何优化,便于程序员调试程序。Release称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。
我们要在LINUX系统下调试程序首先就得生成Debug版本的程序;这需要在生成可执行程序时加上 -g 命令参数;
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/2b4a76d7051961a4b74e3ff54da64dd7.png)
先看一下程序:
1.gdb调试可执行程序
第一部操作就是 : gdb [可执行程序]
人后就进入到了调试界面,如果之前没有加 -g 选项生成Debug版本这里就会出错
进入GDB调试界面之后的一些操作:
l (list) 查看程序
b 打断点
delete [断点序号] 删除指定断点
disable [断点序号] 使断点失效
enable[断点序号] 使断点生效
i b 查看断点信息
r run 运行程序
n next 逐语句运行,遇到函数会进入到函数内部逐语句运行
s step 逐过程运行
c continue 遇到下一个断点则停止
q 退出
p [变量名] 打印变量地址
b t 可查看函数调用的堆栈
f [堆栈序号] 跳转到一个具体的堆栈
2.gdb调试coredump文件
程序在调试崩溃后会产生内存镜像文件,保存程序崩溃时的一些数据。
产生coredump文件的条件:
1.Linux系统下需要设置core size 大小
ulimit -c 查看大小
ulimit -c unlimited 设置大小为unlimited
- 内存空间足够
gdb调试产生core dump文件
然后使用各种命令调试即可。