Linux使用gdb调试多文件的C程序

news2024/11/22 23:35:31

【例】通过vi创建两个.c文件main.c和add.c:

在这里插入图片描述

一步编译main.c和add.c文件,并加入调试信息:

在这里插入图片描述

1. 在被调函数中加断点时,在执行主函数时,会自动进入被调函数

(1)进入gdb,跟踪main程序:

在这里插入图片描述

(2)显示代码

输入l显示的是当前main.c的代码:

在这里插入图片描述
输入l 文件名:行号显示另一个文件中的代码:

输入l add:1显示add.c的代码

在这里插入图片描述

(3)设置断点

①在当前显示的文件中加断点

因为刚刚输入l add:1显示add.c的代码,所以此时加断点,是在add.c中加断点:

在这里插入图片描述
在这里插入图片描述

②显示别的文件,在别的文件中加断点

输入l main:1显示main.c中的代码:

在这里插入图片描述

这时可以在main.c中加断点:

在这里插入图片描述

③给指定函数加断点

给指定函数加断点是在函数开始的地方加了断点

在这里插入图片描述

(4)启动程序

输入r启动程序:

在这里插入图片描述
遇到第一个断点停止。

输入n单步执行:

在这里插入图片描述

查看a的值:

在这里插入图片描述

查看b的值:

由于此时b还没有赋值,因此b的值为0

在这里插入图片描述

查看a+b的值:

在这里插入图片描述

查看a和b的地址:

在这里插入图片描述

然后可以输入c继续执行,直到遇到第二个断点:

在这里插入图片描述

这里自动进入了函数add是因为在add里面加了断点。

继续单步执行:

在这里插入图片描述

此时,查看d的值:

在这里插入图片描述

继续执行,执行结果d的值也是5:

在这里插入图片描述
(5)退出gdb

在这里插入图片描述

2. 不在被调函数中加断点时,不会进入这个被调函数的内部

(1)进入gdb,跟踪main程序

在这里插入图片描述

(2)显示代码

直接显示main.c文件中的代码:

在这里插入图片描述

(3)设置断点

在这里插入图片描述

(4)运行程序

在这里插入图片描述

连续单步执行:

在这里插入图片描述

此时,如果继续单步执行,就会默认执行通过add:

在这里插入图片描述

查看d的值,仍然是正确的:

在这里插入图片描述

可以发现虽然gdb没有跟踪到add内部,跳过了add函数内部的执行过程,通过单步执行,add执行直接可以通过。

(5)退出gdb

在这里插入图片描述

3. 没有在被调函数加断点时怎么进入被调函数

(1)进入gdb,跟踪main程序

在这里插入图片描述

(2)显示代码

直接显示main.c文件中的代码:

在这里插入图片描述

(3)设置断点

在这里插入图片描述

(4)运行程序

在这里插入图片描述

此时,如果要进入add函数的内部,要输入s

在这里插入图片描述

可以看到,这时就进入到add函数内部了。

当确定add函数内部没有错误时,退出add函数,输入finish

在这里插入图片描述

这时就退出了add函数,重新回到了main函数。

(5)退出gdb

在这里插入图片描述

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

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

相关文章

python——案例17:判断某年是否是闰年

案例17:判断某年是否是闰年 判断依据:闰年就是能被400整除,或者能被4整除的年份numint(input(输入年份:))if num%1000: if num%4000: #整百年份的判断print("%s年是闰年"%num) #…

智能优化算法:登山队优化算法-附代码

智能优化算法:登山队优化算法 文章目录 智能优化算法:登山队优化算法1.登山队优化算法1.1 初始化1.2 协作登山1.3灾害威胁1.4协调防御1.5队员更新 2.实验结果3.参考文献4.Matlab5.python 摘要:MTBO 算法是 Faridmehr 等人于 2023 年受登山队员…

【智力悬疑题】——【“找凶手”解法】

“找凶手”题目解法 “案件题目”💻 某地发生了一起凶杀案,警察通过排查确定杀人凶手必为4个嫌疑犯中的一个。以下为4个嫌疑犯的供词: A说:不是我。 B说:是C。 C说:是D。 D说:C在胡说。 已知3个…

vue3+vite在main.ts文件中引入./App.vue报错(./App.vue不是模块)

问题 如下图: 方法一 下载TypeScript Vue Plugin (Volar)插件就不报红了,看它的描述应该就是ts文件可以识别vue文件。 方法二 在src文件夹下添加env.d.ts文件,添加以下代码: declare module *.vue {import type { DefineC…

Android系统-进程-Binder2-Java层

引言: 对于Android系统,一般是从java层到native层,再到kernel驱动层,形成一个完整的软件架构。Android系统中的Binder IPC通信机制的整体架构,从java层到底层驱动层是怎么样的一个架构和原理的呢? 概念与…

详解单链表

💕十载寒窗无人问,一举成名天下知💕 作者:Mylvzi 文章主要内容:程序环境和预处理 引言: 我们之前已经学习过顺序表,顺序表是一种线性的存储结构,它在内存中是连续存放的&#xff1…

《Java-SE-第三十五章》之方法引用

前言 在你立足处深挖下去,就会有泉水涌出!别管蒙昧者们叫嚷:“下边永远是地狱!” 博客主页:KC老衲爱尼姑的博客主页 博主的github,平常所写代码皆在于此 共勉:talk is cheap, show me the code 作者是爪哇岛的新手,水平很有限&…

微服务实战项目-学成在线-项目部署

微服务实战项目-学成在线-项目部署 1 什么是DevOps 一个软件的生命周期包括:需求分析阶、设计、开发、测试、上线、维护、升级、废弃。 通过示例说明如下: 1、产品人员进行需求分析 2、设计人员进行软件架构设计和模块设计。 3、每个模块的开发人员…

Vue3实现图片懒加载及自定义懒加载指令

Vue3实现图片懒加载及自定义懒加载指令 前言1.使用vue-lazyload/vue3-lazyload插件2.自定义v-lazy懒加载指令2.1 使用VueUse工具集2.2 使用IntersectionObserver 前言 图片懒加载是一种常见性能优化的方式,它只去加载可视区域图片,而不是在网页加载完毕…

直线电机模组在3C电子行业中的重要应用

直线模组的种类有很多,是自动化行业中必不可少的传动元件,其中丝杆模组和同步带模组的应用率比较高,但随着自动化领域的迅速发展,高精密直线电机模组也得到了广泛的应用,尤其是在电子行业中的应用。 3C电子产品在我们的…

Redis数据一致性问题的三种解决方案

Redis数据一致性问题的三种解决方案 1、首先redis是什么 Redis(Remote Dictionary Server ),是一个高性能的基于Key-Value结构存储的NoSQL开源数据库。大部分公司采用Redis来实现分布式缓存,用来提高数据查询效率。 2、为什么会选Redis 在…

vue全局组件自动注册直接使用,无需单独先引用注册再使用

目录结构: 本案例是在根目录下components文件夹测试的,文件位置项目内任意,确保在main.js挂载路径正确即可 1、新建文件夹(名字随意)zxy_components (放自己组件的地方) 2、在zxy_components文件夹下 !新建…

中科亿海微FIFO使用

引言 FPGA(现场可编程门阵列)是一种可编程逻辑器件,具有灵活性和可重构性,广泛用于数字电路设计和嵌入式系统开发。在FPGA中,FIFO(First-In, First-Out)是一种常见的存储器结构,用于…

Vue3 Props组件简单应用(父组件获取子组件数据)

去官网学习→Props | Vue.js 运行示例&#xff1a; 代码&#xff1a;App.vue <template><img alt"Vue logo" src"./assets/logo.png"><h2>Vue Props数据传递</h2><h4>子组件中的数据&#xff1a;{{ content }}</h4>…

OpenCV实例(九)基于深度学习的运动目标检测(一)YOLO运动目标检测算法

基于深度学习的运动目标检测&#xff08;一&#xff09; 1.YOLO算法检测流程2.YOLO算法网络架构3.网络训练模型3.1 训练策略3.2 代价函数的设定 2012年&#xff0c;随着深度学习技术的不断突破&#xff0c;开始兴起基于深度学习的目标检测算法的研究浪潮。 2014年&#xff0c;…

软考高项-思维导图31-33(计算机高级系统项目管理师)

陆续更新一些软考高项的思维导图&#xff0c;都是一些必背知识点&#xff0c;希望可以帮助大家早日考过高项&#xff0c;早日当上高工&#xff0c;早日成为杭州E类人才。全部完整导图快速获取链接&#xff1a;计算机高级系统项目管理师-思维导图汇总 三十一、范围确认 三十二、…

MySql(干货)

写这篇博客的目的不是为了将介绍原理&#xff0c;而是为了Sql中的代码操作属实太多了&#xff0c;在这里进行一个汇总&#xff0c;方便查阅&#xff01;&#xff01;&#xff01; Sql分类 分类全称说明 DDL Data Definintion Language数据定义语言&#xff0c;用来定义数据库对…

Linux命令200例:pwd用于显示当前工作目录的绝对路径

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌。CSDN专家博主&#xff0c;阿里云社区专家博主&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &…

智能优化算法:白鲨优化算法-附代码

智能优化算法&#xff1a;白鲨优化算法 文章目录 智能优化算法&#xff1a;白鲨优化算法1.白鲨优化算法1.1 初始化1.2 速度更新1.3位置更新1.4鱼群行为 2.实验结果3.参考文献4.Matlab5.python 摘要&#xff1a;WSO 算法是 Braik 等于 2022 年提出一种基于白鲨深海觅食策略的新型…

第二十三章 原理篇:Pix2Seq

大夏天我好像二阳了真是要命啊。 现在找到工作了&#xff0c;感觉很快乐&#xff0c;但是也有了压力。 《论你靠吹牛混进公司后该怎么熬过试用期》 希望自己能保持学习的习惯&#xff01;加油&#xff01; 参考教程&#xff1a; https://arxiv.org/pdf/2109.10852.pdf https://…