文章目录
一、Linux调试器-gdb使用
1、安装gdb
yum install -y gdb
2、背景
- 程序的发布方式有两种,debug模式和release模式
- Linux gcc/g++出来的二进制程序,默认是release模式,release模式下无法调试
- 要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项
release模式下的gdb演示,无法调试

加上 -g 选项,显然成功
3、Debug和release
Debug形成的可执行程序会给我们增加调试信息,内存变大,而release形成的可执行程序会给我们去掉调试信息,内存变小。
而用户不需要调试信息,他们需要更快的下载和安装,所以有了Dubug和release两个版本
4、区分Debug和release
release下的可执行程序
>Debug下的可执行程序

最直观区分

二、Linux调试器-gdb命令演示
1、显示指定行之后的代码(自动记录最后一条指令)
想显示更多代码需 l+行号 然后一直回车
2、断点
1、打印断点
打印断点一共三种方式,接下来一一介绍。
b+行号

b+函数名+行号
b+文件名+行号(适用于多文件下)

2、查看断点

3、删除断点
注意在删除断点中,显示的是编号,而不是行号。
4、使能(禁用/开启)断点
禁用

开启

3、直接运行结束

4、逐过程(f10)、逐语句(f11)
逐过程

逐语句

5、显示内容
只显示一次

常显示

取消常显示

6、范围查找
切换下一个断点

将函数运行结束

在一个指定范围内,运行到指定行

7、查看调用堆栈

总结

