第六章 linux调试器——gdb的使用
- 一、前提
- 1、debug与release
- 2、gdb的安装
- 二、常用调试指令
- 1、开始调试
- 2、代码显示
- 3、断点设置
- 4、代码执行
- 5、信息监控
- 6、退出调试
一、前提
1、debug与release
程序最终的发布方式分成两种,一种是debug模式,一种是release模式。通常情况下,g++/gcc编译后的可执行文件都是release模式,即发行模式。这两者有什么区别呢?debug模式是允许使用gdb来调试的,所以在debug模式中会含有一些调试信息,这种模式也通常是给程序员使用的。另外一种release模式叫做发行模式,这种模式是不包含调试信息的,所以无法用gdb调试,因此release模式通常是给用户使用的。
那么为了我们能用gdb来调试代码,我们需要在编译器的编译指令中加上-g
。如下图所示:
2、gdb的安装
有的linux服务器中是没有gdb的,所以需要大家自行安装。因为作者使用的是乌班图的Linux,所以这里就贴一下乌班图的安装命令。
sudo apt install gdb
二、常用调试指令
1、开始调试
我们需要在命令行中输入指令:
gdb 二进制可执行文件
如下图:
当我们开始调试以后,就可以输入一些gdb中的一些指令来debug了。
2、代码显示
l 行号 //从第几行开始显示代码(往后显示10行),显示结束后,再按l,可以继续往后显示。
l 函数名 //列出某个函数代码
3、断点设置
b 行号 //在某一行设置断点
b 函数名 //在某个函数的开头设置断点
info break //查看断点信息
delete breakpoints //删除所有断点
delete breakpoints //n删除序号为n的断点
disable breakpoints 断点编号 //禁用断点
enable breakpoints 断点编号 //启用断点
设置断点
查看或修改断点
4、代码执行
r // 运行程序。
n // 逐过程执行。
s // 逐语句执行。
until x //跳至x行
finish // 执行到当前函数返回,然后停下来等待后续的命令。
5、信息监控
p 变量 // 打印变量的数值
set var // 修改变量的数值
c // 从当前位置开始连续而非单步执行程序
display 变量 // 跟踪查看变量,每次停下来都显示该变量的数值
undisplay //取消跟踪某个变量
6、退出调试
quit // 退出调试