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

一、 背景

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

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

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

如下图:

linux 中的 gdb 调试方法和技巧(有截图超详细)_第1张图片

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

那么加上 -g 如何?

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

linux 中的 gdb 调试方法和技巧(有截图超详细)_第2张图片

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

linux 中的 gdb 调试方法和技巧(有截图超详细)_第3张图片

二、开始使用

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

2. 调试命令:

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

linux 中的 gdb 调试方法和技巧(有截图超详细)_第4张图片

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

linux 中的 gdb 调试方法和技巧(有截图超详细)_第5张图片

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

linux 中的 gdb 调试方法和技巧(有截图超详细)_第6张图片


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

linux 中的 gdb 调试方法和技巧(有截图超详细)_第7张图片       
(5)n 或 next:单条执行(和 VS中的 F10 一样 逐过程)

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

linux 中的 gdb 调试方法和技巧(有截图超详细)_第8张图片

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

linux 中的 gdb 调试方法和技巧(有截图超详细)_第9张图片 

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

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

linux 中的 gdb 调试方法和技巧(有截图超详细)_第10张图片

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

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

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

linux 中的 gdb 调试方法和技巧(有截图超详细)_第11张图片

linux 中的 gdb 调试方法和技巧(有截图超详细)_第12张图片

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

linux 中的 gdb 调试方法和技巧(有截图超详细)_第13张图片

linux 中的 gdb 调试方法和技巧(有截图超详细)_第14张图片

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

linux 中的 gdb 调试方法和技巧(有截图超详细)_第15张图片

(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 调试工具的使用。 

你可能感兴趣的:(Linux,linux,vim,gdb)