linux 中的 gdb 调试方法和技巧(有截图超详细)

一、 背景

1. 程序的发布方式有两种,debug模式和release模式

2. Linux gcc/g++出来的二进制程序,默认是release模式

3. 要使用gdb调试,必须在源代码生成二进制程序的时候,加上 -g 选项

如下图:

不加 -g 默认是 release 模式,无法调试,上面那句话是说:(找不到调试符号 )

那么加上 -g 如何?

可以看到文件的大小都变化了,因为 -g 是 Debug 模式。

 现在没有向前面那样报错找不到调试符号了,如下图:

二、开始使用

1. gdb 会记录最近一条命令,如果命令无变化,可以直接回车

2. 调试命令:

(1)r或run:开始调试,如果没有设置断点,就直接运行结束。

(2)info break / info b:查看断点(断点的编号)

(3)break(b) 行号:给特定的行号打断点。


(4)delete breakpoints n / d 断点编号:删除编号为 n 的断点

       
(5)n 或 next:单条执行(和 VS中的 F10 一样 逐过程)

  (这里需要打上断点!!!不然 r 直接运行完了)

(6)p 变量:打印变量值。

 

(7)s :逐语句(VS中的 F11)

        因为我这里只写了 printf,没有自己实现,看着效果可能和 n 一样,但是是不一样的!!!

(8)bt : 查看当前的调用堆栈

因为只写了 main 函数,所以只有 main 函数

(9)disable/enable断点的编号 : 使能(关闭和打开)断点

(10)c : 运行至下一个断点处停下来

(11)list/l 行号:显示binFile源代码,接着上次的位置往下列,每次列10行,如下图:

(12)finish : 将当前函数跑完,就停下来display:设置长显示

(13)undisplay : 取消长显示

(14)until : 跳转到指定行(不建议)

(15)set var:修改变量的值

(16)continue(或c):从当前位置开始连续而非单步执行程序

(17)break 函数名:在某个函数开头设置断点

(18)delete breakpoints:删除所有断点

(19)disable breakpoints:禁用断点

(20)enable breakpoints:启用断点

(21)display 变量名:跟踪查看一个变量,每次停下来都显示它的值

(22)breaktrace(或bt):查看各级函数调用及参数

(23)info(i) locals:查看当前栈帧局部变量的值

(24)quit/q: 退出gdb

以上就是 gdb 调试工具的使用。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值