【Linux杂货铺】调试工具gdb的使用


 

目录

🌈前言🌈

📁背景介绍

📁 使用

list [行号] / [函数名] 

run/r

break/b  [行号] / [函数名]

info break

disable break

enable break

delete break [断点编号]

next/n

step/s

continue/c

finish

print/p  [变量] / [表达式]

set [变量]

display  [变量名]

undisplay  [编号]

until

📁 总结


🌈前言🌈

        本期【Linux杂货铺】将讲解Linux中调试工具gdb的使用,各个参数的含义,如何在Linux中将代码调试起来,以及各个参数对应的在IDE中的含义。

 个人博客:秋刀鱼的滋味@-CSDN博客

 系列专栏:Linux杂货铺_秋刀鱼的滋味@的博客-CSDN博客

📁背景介绍

        在程序发布方式中,有两种模式:debug模式 和 release模式。release模式下是不能进行调试的,所以在开发过程之中,使用的都是debug模式。

        Linux在使用 gcc/g++编译出二进制程序时,默认使用的是release模式。

        要使用gdb调试,必须在源代码生成的二进制程序的时候,加上 -g 选项。

//test.c
#include <stdio.h>                             
int AddToTarget(int start , int end)
{int i = start;int sum = 0;for(;i <= end;i++){sum += i;}return sum;
}int main()
{printf("run begin...\n");int result = 0;result = AddToTarget(1,100);printf("resylt : %d \n",result);printf("run end...\n");return 0;
}

        先创建test.c文件,写入代码。

        通过gcc test.c -o test-debug -g命令,生成test-debug文件。

        最后 gdb test-debug  调试代码

📁 使用

list [行号] / [函数名] 

list / l + 行号:显示源代码,接着上次的位置往下列,每次列10行,知道代码尾。

list / l + 函数名:列出某个函数的源代码。

run/r

        运行程序,从开始连续而非单步执行程序。在VS中,相当于F5。

break/b  [行号] / [函数名]

        在某一行或者某某个函数开头设置断点。在VS中相当于F9。

info break

        查看断点。其中断点是按编号操作的,编号按照创建顺序给出。

disable break

        禁用断点。

        Enb表示断点是否启用,是的话参数为y,禁用为n。

enable break

        启用断点。

delete break [断点编号]

        删除断点。        

next/n

        单条执行。但必须在程序run之后才能使用。run是调试,但不能一行的操作,所以必须配合断点b来使用n。

        在VS中next相当于F10,逐过程调试,不会进入函数体内部进行查看。

step/s

        进入函数调用调试。在VS中,相当于F11

continue/c

        从当前位置开始连续而非单步执行程序。相当于在执行到断点后,run程序。

finish

        执行到当前函数返回,然后等待接下来的命令。如我们step到函数内部,不想调试函数内部信息,只想查看函数执行完结果,可以使用finish,

print/p  [变量] / [表达式]

        打印变量或者表达式的值。

set [变量]

        修改变量的值。

display  [变量名]

        跟踪查看一个变量,你每次停下都显示它的值。在VS中,相当于监视窗口。

undisplay  [编号]

        取消先前的那些变量的跟踪

until

        跳转到指定行,中间的代码都是运行的。

📁 总结

        以上,我们就对Linux中调试工具gdb做了讲解,包括了如何生成可调式版的代码,如何去调试等一系列内容,总体上来说非常简单,只需要多加练习即可。

        以上,就是本期【Linux杂货铺】的内容了,如果感觉对你有帮助,欢迎点赞,收藏,关注,Thanks♪(・ω・)ノ。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/711379.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

06 vim工具

目录 概念模式基本操作配置 1. 概念 vim是一个历史悠久的,多模式的编辑器&#xff0c;是vi的升级版。和ide不同&#xff0c;编辑器仅能编写文本&#xff0c;不能运行代码&#xff0c;现阶段的代码编译的各个过程会分开按步骤执行 2. 模式 vim有很多种模式&#xff0c;想要编…

方格分割644--2017蓝桥杯

1.用dfs解决&#xff0c;首先这题的方格图形就很像一个走迷宫的类型&#xff0c;迷宫想到dfs&#xff0c;最中心点视为起点&#xff0c;起点有两个小人在这个方格里面对称行动&#xff0c;直到走出迷宫&#xff08;一个人走出来了另一个人就也走出来了&#xff0c;而走过的点会…

Vmware Esxi 部署Mac OS虚拟机

Vmware Esxi在创建虚拟机的时候是有Mac OS选项的&#xff0c;但是实际创建时&#xff0c;选择ISO开机后一直反复引导&#xff0c;是有问题的&#xff0c;原因是需要先解锁&#xff0c;需要在ESXI主机上修改配置并重启。 首先找到管理-服务-TSM-ssh&#xff0c;点击启动&#x…

★【二叉搜索树(中序遍历特性)】【 ★递归+双指针】Leetcode 98. 验证二叉搜索树

★【二叉搜索树&#xff08;中序遍历特性&#xff09;】【 ★递归双指针】Leetcode 98. 验证二叉搜索树 二叉搜索树 98. 验证二叉搜索树解法1 笨 中序递归遍历为一个数组 然后判断数组是不是升序排列就可以★解法2 不使用数组 递归法 ---------------&#x1f388;&#x1f38…

php PhpSpreadsheet 读取日期变数字问题解决

问题描述&#xff1a; 使用PhpSpreadsheet 读取表格数据&#xff0c;日期格式读取后变成数字&#xff0c;如下图&#xff1a; 解决方案&#xff1a; $cell $sheet->getCell(H . $row)->getValue(); $toTimestamp \PhpOffice\PhpSpreadsheet\Shared\Date::excelToTimes…

腾轩科技传媒探讨网络整合营销推广的策略和效果

在当今高度信息化的商业环境中&#xff0c;整合营销推广&#xff08;IMC&#xff09;已经成为了品牌营销策略的核心。它旨在通过多种渠道和平台&#xff0c;将一致、连贯的品牌信息传达给目标受众&#xff0c;从而增强品牌知名度和忠诚度。腾轩科技传媒将深入探讨整合营销推广的…

【airtest】自动化入门教程(一)AirtestIDE

目录 一、下载与安装 1、下载 2、安装 3、打开软件 二、web自动化配置 1、配置chrome浏览器 2、窗口勾选selenium window 三、新建项目&#xff08;web&#xff09; 1、新建一个Airtest项目 2、初始化代码 3、打开一个网页 四、恢复默认布局 五、新建项目&#xf…

模拟算法题练习(一)

模拟算法介绍&#xff1a; 模拟算法通过模拟实际情况来解决问题&#xff0c;一般容易理解但是实现起来比较复杂&#xff0c;有很多需要注意的细节&#xff0c;或者是一些所谓很“麻模“的东西。 模拟题一般不涉及太难的算法&#xff0c;一般就是由较多的简单但是不好处理的部…

【算法】最小生成树—Prim算法与Kruskal算法

Prim算法和Kruskal算法都是解决最小生成树问题的经典算法。最小生成树是原图的最小连通子图&#xff0c;它包含原图的全部结点&#xff0c;且保持图连通的所有边代价和最小。一个连通图可能有多个最小生成树。 一、Prim算法 含义 Prim算法&#xff0c;也被称为普里姆算法&…

基于移动端的食堂助餐在线点餐配送系统 uniapp微信小程序

本文从管理员、老人、配送员、食堂商家的功能要求出发&#xff0c;养老助餐管理系统小程序中的功能模块主要是实现老人、配送员、食堂商家、食堂大厅、预约选座、餐号信息、美食信息、美食订单、订单信息、订单配送、订单评价、老人食堂、下单信息、饮食分析。经过认真细致的研…

C语言可以干些什么?C语言主要涉及哪些IT领域?

C语言可以干些什么&#xff1f;C语言主要涉及哪些IT领域&#xff1f; 在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「C语言的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家…

Docker技术概论(1):Docker与虚拟化技术比较

Docker技术概论&#xff08;1&#xff09; Docker与虚拟化技术比较 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https:…

ABAP 发送带EXCEL邮件

前言 没啥特殊需求&#xff0c;就是有个库龄报表用户想整邮件发送 实现 用的最简单的XLS文件作为excel附件发送出去 观察XLS文件的纯文本格式&#xff0c;每列之间用TAB制表符分隔&#xff0c;每行之间用回车符分隔 思路也比较明确&#xff0c;在SAP中实现这种格式&#xf…

.Net利用Microsoft.Extensions.DependencyInjection配置依赖注入

一、概述 为了让接口程序更加模块化和可测试,采用依赖注入的方式调用接口方法。 二、安装Microsoft.Extensions.DependencyInjection 在NuGet里面搜索Microsoft.Extensions.DependencyInjection,并进行安装。 三、代码编写 3.1 创建Service 实现类 /*****************…

Doccano 修复 spacy.gold 的bug

引言 最初只是想把Doccano标注的数据集转换成BIO(类似conll2003数据集)的标注格式&#xff1b; 摘要 可先阅读一下教程&#xff1a;【已解决】关于如何将Doccano标注的文本转换成NER模型可以直接处理的CoNLL 2003格式 装包:pip install doccano-transformer 报错信息 运行…

【前端素材】推荐优质后台管理系统DAdmin平台模板(附源码)

一、需求分析 1、系统定义 后台管理系统是一种用于管理网站、应用程序或系统的管理界面&#xff0c;通常由管理员和工作人员使用。它提供了访问和控制网站或应用程序后台功能的工具和界面&#xff0c;使其能够管理用户、内容、数据和其他各种功能。 2、功能需求 后台管理系…

记录 关于navicat连接数据库报错1045的问题

重装数据库之后就连接不上了 报错1045 而网上的解决方案大都是更改数据库密码&#xff0c;但是我在第一步就被卡住无法更改密码&#xff0c;输入指令也报错&#xff0c;检查的环境变量也没错&#xff0c;经过长时间的试错终于找到解决了办法 解决办法 删除data文件夹 如果无法…

Python:练习:输出int值a占b的百分之几。例如:输入1和4,输出:25%。

案例&#xff1a; 输出int值a占b的百分之几。例如&#xff1a;输入1和4&#xff0c;输出&#xff1a;25%。 思考&#xff1a; 所有的一步步思考&#xff0c;最后综合起来。 首先&#xff0c;确定 输出&#xff0c;那么就用input&#xff0c;而且是int值&#xff0c;所以肯定…

C++设计模式_创建型模式_工厂方法模式

目录 C设计模式_创建型模式_工厂方法模式 一、简单工厂模式 1.1 简单工厂模式引入 1.2 简单工厂模式 1.3 简单工厂模式利弊分析 1.4 简单工厂模式的UML图 二、工厂方法模式 2.1 工厂模式和简单工厂模式比较 2.2 工厂模式代码实现 2.3 工厂模式UML 三、抽象工厂模式 3.1 战斗场景…

MDS300-16-ASEMI整流模块MDS300-16参数、封装、尺寸

编辑&#xff1a;ll MDS300-16-ASEMI整流模块MDS300-16参数、封装、尺寸 型号&#xff1a;MDS300-16 品牌&#xff1a;ASEMI 封装&#xff1a;M25 最大重复峰值反向电压&#xff1a;1600V 最大正向平均整流电流(Vdss)&#xff1a;300A 功率(Pd)&#xff1a;大功率 芯片…