• 【Linux学习笔记】调试工具gdb


    1. gdb

    gdb是Linux下的一个调试工具,主要内容是利用命令行来调试代码,下面我将以vs2019的调试操作逐一对应到gdb的调试命令。

    首先我是在xshell连接远端云服务器搭配Linux环境来使用gdb的,第一步要做的就是下载gdb工具,具体怎么下载可以看yum工具部分内容。

    下面写一个求和函数,来看看gdb是如何使用命令调试代码的。

      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 }     
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    2. debug和release的认识

    当我写好了一个代码,并且成功编译后,然后我好奇地想去调试一下代码。

    img为什么会这样子呢?原因是gcc工具编译好的代码是一个release版本的,这个版本是专门给用户使用的,是没有调试功能的。如果想要调试,那么就需要是debug版本的。

    对应的来看到vs2019的编译。

    img

    从文件的体积上面,可以很清楚的区别debug和release版本的文件。

    img

    • 怎么编译产生debug版本的文件呢?
    • 命令:gcc -o 文件名 -g 源文件
    • 操作:就是在原来编译的基础上,加上了-g选项,使其生成的文件是debug版本的。
    • 示范:img

    3. gdb命令

    1. 显示代码的命令

    命令:list(简写可以写l)

    操作:会将代码显示到屏幕上,可以指定从第几行开始展示

    示范:

    img

    img

    1. 打断点

    命令:break + 行号(可以直接 b + 行号)

    操作:将你所指定的行号打上断点。

    示范:img

    类似vs2019的F9打断点操作,类似下面的图。

    img

    1. 查看断点信息

    命令: info b

    操作:将会在屏幕上显示你断点的信息

    示范:img

    1. 删除断点

    命令: d + 断点编号

    操作:删除对应编号的断点

    示范:img

    1. 调试运行

    命令:run(可以简写r)

    操作:直接调试运行到你的第一个断点

    示范:

    img

    1. 逐过程调试

    命令:next(可以简写n)

    操作:将从你现在所在的代码行开始,逐过程调试(如果有函数则不进入函数,跳到下一步),类似vs2019的F10

    示范:

    img

    1. 逐语句调试

    命令:step(可以简写s)

    操作:将从你现在所在的代码行开始,逐语句调试(如果有函数则进入函数,进入函数内部),类似vs2019的F11

    示范:

    img

    1. 运行到下一个断点

    命令:continue(可以简写c)

    操作:将直接跳转到下一个断点

    img

    img

    1. 完成当前函数跳出

    命令: finish

    操作:直接一步完成当前函数并退出函数

    示范:

    img

    img

    1. 临时查看变量

    命令:p + 想查看的变量

    操作:将想查看的变量临时打印到屏幕上

    示范:

    img

    1. 持续查看变量

    命令: display + 想查看的变量

    操作:将在屏幕持续显示想要查看的变量,类似vs2019的监视窗口

    示范:

    img

    1. 取消持续查看变量

    命令:undisplay + 变量前的编号

    操作:将取消持续显示在屏幕的变量

    示范:

    img

    1. 跳转至指定行

    命令: until + 行数

    操作:将跳转到指定的行

    示范:

    img

  • 相关阅读:
    数据中台开源解决方案(一)
    RDD行动算子和血缘关系
    1451_TC275 DataSheet阅读笔记12_时钟、温度以及供电
    安装centos7无线网卡(RTL8723BE)
    python pyinstaller库
    sqlalchemy 连接池
    Linux权限
    Java多线程-ThreadPool线程池-1(三)
    边缘服务器网络(抵御DDos攻击)平衡请求负载
    创新实战|从5大维度成功实现传统研发向敏捷研发转型
  • 原文地址:https://blog.csdn.net/m0_71259890/article/details/133855409