debug && release
debug 能调试 有debug信息
release 不能调试 无dubug信息
用readelf -S查看文件的二进制构成

我们只需要过滤出debug信息即可

发现没有debug信息
所以gcc默认生成的是release的
如果想生成debug文件 必须携带-g选项

这时就有了debug信息

预备工作
先写一段简单的程序

使用gdb mytest调试程序
list或l 查看代码
我们调试代码的时候肯定是需要查看代码的
l num 查看第num行的代码
;
如果无法显示全部代码, 可以直接按enter让文件下翻
;
l 函数名 查看某一个函数
;
;
r运行代码
如果我们不打断点, 直接运行代码的话gdb就会像正常运行一样
;
那我们怎么给程序打上断电呢
;
b 行号 在该行打上断点(break point)
;

;
info b 查看断点信息
;

;
d 断点编号 删除断点
;

;
注意
如果退出了gdb那么调试时设置的断点等信息就会消失
n逐过程调试(next)
逐过程与逐语句的区别就是, 逐过程是会把函数调用直接跳过, 而逐语句是会进入函数内部的
逐语句调试(step)
进行逐语句调试
p查看变量的内容
;

;
display 变量常显示变量内容
;

;
undisplay 编号删除该编号变量的常显示
;

;
disable 使某个断点无效
;

;
enable 使某个断点生效
;

;
until 行数 让程序直接运行到该行再停下
untile
;

;
finish跑完当前所在的函数
;

;
c运行到下一个断点(continue)
;

;
本文详细介绍了如何在C/C++程序中使用GDB进行debug模式调试,包括设置断点、查看代码、变量内容以及执行控制等基本操作。通过readelf检查二进制文件,强调了gcc默认生成release版本,需通过-g选项添加debug信息。

被折叠的 条评论
为什么被折叠?



