目录
一、背景
- 程序的发布方式有两种,debug模式和release模式;
- Linux gcc/g++出来的二进制程序,默认是release模式;
- 要使用gdb调试,就必须要生成debug模式下的二进制文件, 在源代码生成二进制程序的时候加上 -g 选项,这样就可以生成debug版本。
我们在vim上面编写完代码,可能会出现一些问题,造成编译不通过,此时我们就能借助gdb来调试代码,进而解决问题。
演示如下:
上图就可以看出已经进入调试。
注意:要是在release版本下,是无法进行gdb调试的。
二、开始使用
- l 行号:显示 test 源码,接着上次的位置往下列,每次列10行。
- r :运行程序。
因为我们之前没有设置断点,所以直接就能运行到结尾。
- n:单条执行(就相当于我们在VS调试下的F10)。
- s:进入函数调用(就相当于我们在VS调试下的F11)。
注意:需要结合断点来执行上面的命令。
- b 行号:是在某一行的位置设置断点。
假设在13行处设置断点 ,演示如下:
然后运行一下程序就到断点处停下:
此时,在执行一下s 的命令,就进入了函数内部,演示如下:
- c:跳到下一个断点处
假设在第15行再设置一个断点时,执行c 命令,演示如下:
- info b:查看当前设置的断点信息
- disable 断点编号:关闭断点
- enable 断点编号:打开断点
表示已经在第13行和第15行设置了断点。其中Enb : 表示的是断点是否被启用,y是启用状态,n是禁用状态(可以被忽略)。
- d :删除所有断点;
- d n:删除序号为n的断点。
演示如下:
- p 变量:打印变量值;
- set var:修改变量值
演示如下:
注意: 要在程序运行的时候,才能显示a和b变量的值,同样也可以设置变量的值。
- until X行号:调至X行
演示如下:
注意:要在程序运行的时候才能跳至下一位置。
- q:退出gdb 调试。
本文要是有不足的地方,欢迎大家在下面评论,我会在第一时间更正。