【Linux初阶】Linux调试器-gdb使用 | gdb的 l/b/info/d/r/n/s/bt/finish/p/(un)display/q

news2025/8/6 18:24:07

 🌟hello,各位读者大大们你们好呀🌟

🍭🍭系列专栏:【Linux初阶】

✒️✒️本篇内容:gdb使用相关背景知识,gdb的使用(打断点、查断点、消断点、调试运行、查看对应变量)

🚢🚢作者简介:计算机海洋的新进船长一枚,请多多指教( •̀֊•́ ) ̖́-

📡📡同期Linux工具文章:Linux环境下的 git 使用

目录

一、背景知识

二、gdb的使用

1. gdb安装

2. l - debug模式下查看代码

3. b、info、d - debug模式下打断点、查断点、去断电

4. r、n、s - 调试运行(逐过程、逐语句)

5. bt、finish - 查看调用堆栈、跑完对应函数

6. p - 查看对应变量和对应变量的地址

7. (un)display - 对特定变量进行常显示 

8. 修改变量值、禁用/启用断点、退出 (q)


一、背景知识

程序的发布方式有两种,debug模式和release模式(debug用于程序员调试,release对代码进行了优化,多给予用户使用)

Linux gcc/g++出来的二进制程序,默认是release模式

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

Linux环境下,调试默认为release模式,不能直接调试

 在makefile的gcc生成指令中加上 -g,使程序以debug方式发布

  • 这里是在源文件 mycode.c 和 main.c 后面加 -g ,(-DN=1可忽略)


二、gdb的使用

1.gdb安装

sudo yum install gdb    #普通用户
yum install gdb    #root用户


2.l - debug模式下查看代码

l显式可执行程序代码
l 0显式可执行程序第一行代码 - [小写英文L,数字0]
回车默认运行上一次的指令(第二次输入l,代码下翻)


3.b、info、d - debug模式下打断点、查断点、去断电

对应指令如下

  • break(b) 行号:在某一行设置断点
  • info(或i) breakpoints:参看当前设置了哪些断点
  • delete breakpoints n:删除序号为n的断点
  • delete breakpoints:删除所有断点

对应示例如下 

 


4.r、n、s - 调试运行(逐过程、逐语句)

 对应指令如下

  • r或run:运行程序
  • n 或 next:单条执行(逐过程)
  • s或step:进入函数调用(逐语句)


5.bt、finish - 查看调用堆栈、跑完对应函数

  对应指令如下

对应示例如下 

  • 进入到 ProncessOn () 函数中的堆栈调用情况

  •  运行完对应函数(进度条小程序),再查看对应的堆栈


6.p - 查看对应变量和对应变量的地址

  对应指令如下

  • p + 对应变量名 —— 查看对应变量
  • p + &对应变量名 —— 对应变量的地址

 

对应示例如下 (在循环中查看变量sum、i 及其地址)


7.(un)display - 对特定变量进行常显示 

  对应指令如下

  • display 变量名:跟踪查看一个变量,每次停下来都显示它的值
  • undisplay 变量名:取消对先前设置的特定变量的跟踪


8.修改变量值、禁用/启用断点、退出 (q)

  对应指令如下

  • set var:修改变量的值
  • disable breakpoints:禁用断点
  • enable breakpoints:启用断点
  • quit:退出gdb 


 🌹🌹Linux调试器-gdb的使用大概就讲到这里啦,博主后续会继续更新更多Linux操作系统的相关知识,干货满满,如果觉得博主写的还不错的话,希望各位小伙伴不要吝啬手中的三连哦!你们的支持是博主坚持创作的动力!💪💪

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

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

相关文章

【python拼图游戏】图片自选,来挑战一下自己的极限吧~

嗨害大家好鸭!我是小熊猫❤ 拼图的画面多以自然风光、建筑物以及一些为人所熟识的图案的为题材。 城堡和山峦是两类传统的主题, 不过任何图画和影像都可以用做拼图的素材。 有一些公司还提供将私人摄影作品制成拼图的服务。 今天我小熊猫就给带来py…

FFmpeg5.1 解码rtsp 并用OpenCV 播放

RTSP 连接过程如下图 看下实际过程中FFmpeg 的日志情况: [tcp 0000014CC3256D40] No default whitelist set [tcp 0000014CC3256D40] Original list of addresses: [tcp 0000014CC3256D40] Address ::1 port 8554 [tcp 0000014CC3256D40] Address 127.0.0.1 po…

使用BP神经网络、RBF神经网络以及PSO优化的RBF神经网络对数据进行预测(Matlab代码实现)

🍒🍒🍒欢迎关注🌈🌈🌈 📝个人主页:我爱Matlab 👍点赞➕评论➕收藏 养成习惯(一键三连)🌻🌻🌻 🍌希…

Keysight是德科技E5061B网络分析仪-安泰测试

E5061B ENA系列网络分析仪从5Hz 至3GHz提供了广泛的频率范围。它不仅支持一般的射频应用(例如滤波器或放大器测量等),还支持低频应用(例如直流至直流转换器环路增益测量)。因此,它是所有实验台上进行网络分析的最重要工具。 拥有E5061B,您就…

Selenium4 新特性

一、Selenium4 简介 Selenium是一个综合性项目,包含一系列的工具和库,支持Web浏览器的各种自动化操作: 软件测试爬虫领域RPA领域优点: 开源:https://github.com/SeleniumHQ兼容性: Chrome、FireFox、Edeg、IE、Opera、Safari支持多种编程语言:Java、Python、C#、Ruby、…

Charles抓包web、手机、小程序配置

一、下载地址 二、web抓包 Charles Web抓包,启动Charles会自动与浏览器设置成代理,不需要进行过多的设置。接下来就是通过浏览器发送网络请求,Charles就会直接抓取到这些信息和响应信息。 1、抓取HTTPS协议 Charles配置 点击顶部菜单栏【He…

双功能螯合剂p-NCS-Bz-DFO,1222468-90-7,p-SCN-Bn-Deferoxamine特点分析

●外观以及性质: p-SCN-Bn-Deferoxamine属于双功能螯合剂,西安凯新生物科技有限公司是各种修饰性PEG供应商,提供各种品质优良PEG衍生物,分子量从1000-40000不等,纯度≥95%,发货速度快。 ●中文名&#xff…

Web学习笔记-React

笔记内容转载自AcWing的Web应用课讲义,课程链接:AcWing Web应用课。 CONTENTS1. React配置环境2. ES6语法补充3. Components1. React配置环境 React官网:React。 React是一个声明式,高效且灵活的用于构建用户界面的JavaScript库…

凡事预则立,不预则缺货!2022年底了核芯物联蓝牙AOA定位基站GA25缺货!GA10缺货!GA60也缺货!

凡事预则立,不预则缺货!2022年底了核芯物联蓝牙AOA定位基站GA25缺货!GA10缺货!GA60也缺货! 核芯物联岳毅恒 ​ 深圳核芯物联科技有限公司 战略合作拓展总监 凡事预则立,不预则缺货!202222年底…

brython | 初探鼠标事件-1:点击事件

各位前端大佬勿笑话,运维小弟献丑了。 前段时间看见大佬使用【文言文】写了一个连连看,于是我也想用【brython】也实现一个连连看。 于是乎,你们就看到这篇文章和这个项目了。 如果大佬们对brython不是特别了解的话,建议先查看之…

JVM分析工具

JVM在运行过程中,我们可以利用各种工具对JVM进行分析,这是性能调优的利器。可以通过各种工具了解在系统运行过程中,在JVM底层到底发生了什么。JVM分析工具一般分为两种,一种是命令行工具,一种是图形界面工具。 JVM分析…

卷积操作的不同类型

文章目录1. 一维卷积2. 二维卷积3. 三维卷积4. 扩张卷积5. 空洞卷积6. 分组卷积一般而言,一维卷积用于文本数据;二维卷积用于图像数据,对宽度和高度都进行卷积;三维卷积用于视频及3D图像处理领域,对立方体的三个面进行…

CS5269TypeC转HDMI2.0+VGA带PD100W快充拓展坞方案芯片完整设计资料(原理图+PCB文件)

CS5269TypeC转HDMI2.0VGA带PD100W快充方案芯片原理图: 用于US Type-C或DP1.4连接到HDMI2.0转换器。CS5269集成了DP1.4HDMI2.0的输出端和VGA输出接口。另外,两个CC控制器包括CC通信,以实现DP Alt模式和功率传输功能,一个用于上游类…

SD-WAN NFV uCPE VNF

NFV(network function virtulization) NFV(network function virtulization,网络功能虚拟化)是指一种操作框架,目的是为了将部署在COTS硬件上的、在虚拟基础架构中的VNF软件设备编排和自动化起来,然后进行…

精耕丨“银发族”与“熬夜党”都在养生,大健康品牌怎样精耕消费者需求?

“被疫情偷走的这三年”里,健康成为所有人不得不面对的生活命题。 丁香医生《2022国民健康洞察报告》显示,2021年人们平均存在4.8个健康困扰,算得上“人均亚健康”,其中情绪、身材、皮肤焦虑位列TOP3。 人们对稳住健康的追求也一…

5G无线技术基础自学系列 | 物理共享信道分配

素材来源:《5G无线网络优化实践》 一边学习一边整理内容,并与大家分享,侵权即删,谢谢支持! 附上汇总贴:5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 在LTE协议中,DCI的位置和对应…

第一章《初学者问题大集合》第8节:Java程序初步释疑

当成功运行了第一个Java程序,很多读者都对之前的各项操作以及所写的这行代码有一些不清楚的地方,本节就来解答一下这些问题。其实,初学者的大部分疑问都集中体现在图1-41中。 图1-41 源文件名与类名称 1.类是个什么东西? 前文曾经让各位读者在写代码之前先创建一个“类”…

day065:IO流、字节流、字节流写数据

目录 一、IO流 1.IO流的目的 2.IO的表示 二、IO流的分类 1.按流向分 2.按数据类型分 三、字节流 1.字节流写数据 2.字节流的注意事项 3.字节流写数据的三种方式 4.字节流写数据的两个问题 (1)字节流写数据如何换行? (…

腾讯云服务器部署vue前端项目(Ubuntu+vue+nginx+nodejs+npm)

一、安装nodejs和npm sudo apt-get nodejs sudo apt-get npm 但是在安装npm后,输入npm --version时,会报错 此时,需要升级nodejs的版本,执行下面的两条命令 wget -qO- https://deb.nodesource.com/setup_16.x | sudo -E bash - …

兄弟兄弟,在git中的使用.gitignore忽略不想要提交的文件,了解一下呗

1. .gitignore的作用 在实际的工程项目中,除了项目本身的代码文件、配置文件外,还有一些文件或目录并不需要纳入版本管理中,如idea工具会在工程根目录生成一个.idea的目录、工程编译后生的target等。因此在提交代码文件的时候需要自动把这些目…