秒懂Linux之gdb调试

news2025/1/18 17:07:02

fe594ea5bf754ddbb223a54d8fb1e7bc.gif

目录

一. 前情提要

二. 相关命令

2.1 l 行号/函数名

2.2 r

2.3 b

2.4 info break

2.5 d

2.6 disable/enable

2.7 n

2.8 s

2.9 p

2.10 display/undisplay

2.11 c

2.12 bt

2.13 finish

2.14 untill

2.15 set var

三. 总结


一. 前情提要

Linux gcc/g++出来的二进制程序,默认是release模式
要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项

二. 相关命令

2.1 l 行号/函数名

list/l 行号:显示binFile源代码,接着上次的位置往下列,每次列10行。
list/l 函数名:列出某个函数的源代码。
因为在gdb里回车能自动记录最近一条指令,想看完整代码接下来不断回车即可~

2.2 r

r或run:运行程序。

2.3 b

break(b) 行号:在某一行设置断点
break 函数名:在某个函数开头设置断点

2.4 info break

info break :查看断点信息。

2.5 d

delete breakpoints:删除所有断点
delete breakpoints n:删除序号为n的断点

2.6 disable/enable

disable breakpoints:禁用断点
enable breakpoints:启用断点

2.7 n

n 或 next:单条执行(把每一行当作一个整体,包括函数)

2.8 s

s或step:进入函数调用

2.9 p

p 变量:打印变量内容或地址

2.10 display/undisplay

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

2.11 c

continue(或c):从一个断点运行到另一个断点

2.12 bt

breaktrace(或bt):查看各级函数调用及参数

2.13 finish

finish:执行到当前函数返回,然后挺下来等待命令 

2.14 untill

until X行号:跳至X行(可用来跳出循环等等)

2.15 set var

set var:修改变量的值
这个比较少用,一般用来该变判断的反面来测试程序是否能运行下去,就不用跑到源代码改完再回来测了。

三. 总结

其实这些指令并不是重点,重点是我们需要学会有调试的思维,通过这些指令来帮我们找出问题,划定范围,然后不断缩小范围,最后找到问题。这个过程才是最重要的~

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

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

相关文章

100379.新增道路查询后的最短距离I

今天看到很有意思的一个题目,记录下来,供大家参考 题目描述 解题思路 为了解决这个问题,我们需要处理一系列的单向道路添加操作,并在每次添加后计算从城市 0 到城市 n-1 的最短路径长度。由于初始时每个城市 i 都有一条到 i1 的…

【C++高阶】:C++11的深度解析下

✨ 彼方尚有荣光在,何须悲叹少年轻 🌏 📃个人主页:island1314 🔥个人专栏:C学习 🚀 欢迎关注:👍点赞 👂&…

浅谈 Spring AOP框架 (1)

文章目录 一、什么是 Spring AOP二、为什么要使用 Spring AOP三、AOP 的一些应用场景四、AOP 的组成五、如何使用 Spring AOP六、Spring AOP 的实现原理6.1、JDK 和 CGLIB 的区别 一、什么是 Spring AOP AOP (Aspect Oriented Programming) :面向切面编程&#xff…

[CTF]-PWN:格式化字符串漏洞题综合解析

printf型格式化字符串漏洞: 任意地址写: 32位: 例题(inndy_echo): 有格式化字符串漏洞,可以修改printf的got表内地址为system,传参getshell 解法一: 在32位中可以使…

C语言 操作符

操作符分多种:算术操作符,移位操作符,位操作符,赋值操作符,单目操作符,关系操作符,逻辑操作符,条件操作符,逗号表达式,下标引用,函数调用和结构成…

【Web开发手礼】探索Web开发的秘密(十四)-Vue2(1)Node.js的安装、Vue入门

主要介绍了Node.js的安装教程、Vue2常用的一些指令、声明周期!!! 文章目录 前言 Node.js安装 选择安装目录 验证NodeJS环境变量 配置npm的全局安装路径 切换npm的淘宝镜像 安装Vue-cli ​编辑 Vue2入门 引入vue.js文件 入门代码 常用指令 生…

眼在手外-机器人坐标系与相机坐标系标定方法

1 眼在手外坐标系概述 实现机械臂和相机的手眼标定,就是要通过双目相机坐标系、机械臂坐标系和机械臂 末端执行器三者的坐标系转换,求出手眼转换矩阵。设双目相机坐标系为 Oc,标定板坐标 系为 Ow,末端执行器坐标系为 Oe&#xff0…

【学习笔记】Day 3

一、进度概述 1、作业1 2、组会会议纪要——没太听懂,得再看 二、详情 1、作业1 (1)在python中,想要使output为图片,需要用的matplotlib库,这里做简单的整理,以便更好的理解代码。 …

ADC的介绍和工作原理

一,什么是ADC? Analog-to-Digital Converter,指模拟/数字转换器 什么是ADC: ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁 SUCH AS: 12 位 ADC 是一种逐次逼近…

免费【2024】springboot 导师选择管理系统的管理设计与实现

博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围:SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化…

从零入门 AI for Science(AI+药物) 笔记 #Datawhale AI 夏令营

💖使用平台 我的Notebook 魔搭社区 https://modelscope.cn/my/mynotebook/preset . 魔搭高峰期打不开Task3又换回飞桨了 吧torch 架构换成了 飞桨的paddle 飞桨AI Studio星河社区-人工智能学习与实训社区 https://aistudio.baidu.com/projectdetail/8191835?cont…

解决电脑数字小键盘经常自动关闭的问题

本文解决了电脑数字小键盘经常自动关闭的问题,可供大家参考。 winR,输入regedit打开注册表 依次选择HKEY_USERS DEFAULT Control Panel---Keyboard”,将InitialKeyboardIndicators的值由2147483648改为80000002,即可解决。

xss漏洞(四,xss常见类型)

本文仅作为学习参考使用,本文作者对任何使用本文进行渗透攻击破坏不负任何责任。 前言: 1,本文基于dvwa靶场以及PHP study进行操作,靶场具体搭建参考上一篇: xss漏洞(二,xss靶场搭建以及简单…

[240804] OpenTofu 1.8.0 发布,带来更友好的编码体验 | 生成式 AI 滥用现象分析

目录 OpenTofu 1.8.0 发布,带来更友好的编码体验生成式 AI 滥用现象分析 OpenTofu 1.8.0 发布,带来更友好的编码体验 OpenTofu 1.8.0 现已发布,主要功能包括: 变量和局部值的早期求值: 现在可以在模块源、后端配置和状态加密等更…

西部数据HDD和闪存业务均在复苏加速

财务概览 西部数据(Western Digital)截至2024年7月341日的第四财季营收达到37.6亿美元,同比增长41%,超出预期的33亿美元,净利润达到3.3亿美元,与去年同期亏损7.15亿美元形成鲜明对比。整个2024财年的营收增…

C语言初阶(12)

1.调试的基本 调试是发现并解决C语言编译的bug的方法。 调试基本步骤是1.发现程序错误的存在 2.以隔离、消除等方式对错误进行定位 3.确定错误产生的原因 4.提出纠正错误的解决办法 5.对程序错误予以改正,重新测试 编译版本release和debug版本,releas…

一例AutoHotkey语言生成的文件夹病毒分析

概述 这是一个使用AutoHotkey语言编写的文件夹病毒,使用ftp服务器来当作C2,通过U盘传播,样本很古老,原理也很简单,这种语言的样本还是第一次见到,记录一下。 样本的基本信息 PE32库: AutoIt(3.XX)[-]编译…

Cocos Creator2D游戏开发(11)-飞机大战(9)-cocos发布微信小游戏

准备工作: ① cocosCreator ②微信小游戏开发者工具 第一步: cocosCreator 打包编译,设置发布平台,默认场景,设备方向,AppId 最后点击构建 等待构建完成 第二步: 导入微信开发者工具 就是cocos Creator 中构建发布里面的发布路径 然后编译: 剩下的就是微信开发者工具…

Bootstrap框架介绍

1、Bootstrap框架的下载和使用 Bootstrap框架是基于HTML、CSS、JavaScript的CCS/HTML框架,是一种封装好的前端框架。它包括js、css、front字体样式库。该框架下载链接:https://v3.bootcss.com/getting-started/#download,并选择下载源码。 建一个BootstrapDemo文件夹,将js…

反激式电源为什么上电最容易烧MOS管?

大家好,这里是大话硬件。 这篇文章总结一下最近在研究的反激电源RCD吸收回路和VDS尖峰问题。这也是为什么MOS管在开机容易被电压应力击穿的原因。 下图是反激电源变压器部分的拓扑。 在MOS开通时,VDS上电压: 由于Rdson比较小,MOS开通时,VDS电压也较小。此时,MOS漏极电…