- [1. gdb](#1. gdb)
- [2. debug和release的认识](#2. debug和release的认识)
- [3. gdb命令](#3. gdb命令)
1. gdb
gdb是Linux下的一个调试工具,主要内容是利用命令行来调试代码,下面我将以vs2019的调试操作逐一对应到gdb的调试命令。
首先我是在xshell连接远端云服务器搭配Linux环境来使用gdb的,第一步要做的就是下载gdb工具,具体怎么下载可以看yum工具部分内容。
下面写一个求和函数,来看看gdb是如何使用命令调试代码的。
cpp
1 #include <stdio.h>
//求和函数
2 int addToSum(int begin, int end)
3 {
4 int sum = 0;
5 int i = begin;
6 while(i <= end)
7 {
8 sum += i;
9 i++;
10 }
11 return sum;
12 }
//打印函数
13 void Display(int sum)
14 {
15 printf("%d\n",sum);
16 }
//主函数
17 int main()
18 {
19 int sum = addToSum(0,10);
20 Display(sum);
21 return 0;
22 }
2. debug和release的认识
当我写好了一个代码,并且成功编译后,然后我好奇地想去调试一下代码。
为什么会这样子呢?原因是gcc工具编译好的代码是一个release版本的,这个版本是专门给用户使用的,是没有调试功能的。如果想要调试,那么就需要是debug版本的。
对应的来看到vs2019的编译。
从文件的体积上面,可以很清楚的区别debug和release版本的文件。
- 怎么编译产生debug版本的文件呢?
- 命令:gcc -o 文件名 -g 源文件
- 操作:就是在原来编译的基础上,加上了-g选项,使其生成的文件是debug版本的。
- 示范:
3. gdb命令
- 显示代码的命令
命令:list(简写可以写l)
操作:会将代码显示到屏幕上,可以指定从第几行开始展示
示范:
- 打断点
命令:break + 行号(可以直接 b + 行号)
操作:将你所指定的行号打上断点。
示范:
类似vs2019的F9打断点操作,类似下面的图。
- 查看断点信息
命令: info b
操作:将会在屏幕上显示你断点的信息
示范:
- 删除断点
命令: d + 断点编号
操作:删除对应编号的断点
示范:
- 调试运行
命令:run(可以简写r)
操作:直接调试运行到你的第一个断点
示范:
- 逐过程调试
命令:next(可以简写n)
操作:将从你现在所在的代码行开始,逐过程调试(如果有函数则不进入函数,跳到下一步),类似vs2019的F10
示范:
- 逐语句调试
命令:step(可以简写s)
操作:将从你现在所在的代码行开始,逐语句调试(如果有函数则进入函数,进入函数内部),类似vs2019的F11
示范:
- 运行到下一个断点
命令:continue(可以简写c)
操作:将直接跳转到下一个断点
- 完成当前函数跳出
命令: finish
操作:直接一步完成当前函数并退出函数
示范:
- 临时查看变量
命令:p + 想查看的变量
操作:将想查看的变量临时打印到屏幕上
示范:
- 持续查看变量
命令: display + 想查看的变量
操作:将在屏幕持续显示想要查看的变量,类似vs2019的监视窗口
示范:
- 取消持续查看变量
命令:undisplay + 变量前的编号
操作:将取消持续显示在屏幕的变量
示范:
- 跳转至指定行
命令: until + 行数
操作:将跳转到指定的行
示范: