Linux---gdb工具

目录

初步了解

gdb安装

gdb使用


初步了解

gdb是Linux中的调试器。

发布软件一般有两种方式debug和release。

debug版本:一般开发人员使用,这个版本形成的可执行程序有调试功能和调试信息,文件比较大。

release版本:一般测试人员使用,这个版本形成的可执行程序没有调试功能和调试信息,文件较小。

gcc/g++编译时默认release版本且动态链接。

gcc -g 指定文件 #编译链接指定文件以debug版本发布
g++ -g 指定文件 #编译链接指定文件以debug版本发布

 这样,形成的可执行程序就可以被我们调试了。

gdb安装

yum install -y gdb      #root用户安装gdb
sudo yum install -y gdb #非root用户安装gdb

gdb使用

#基本操作
gdb 可执行程序:开始调试指定的可执行程序。
quit:退出调试。#打印相关指令
l :显示代码(从哪一行开始取决于vim退出时光标停留在哪),之后回车键继续打印之后的代码。
l 指定行号 :显式指定行之后的部分代码,之后回车键继续打印之后的代码。
l 指定函数 :显示指定函数。
l 源文件:指定行号 :显示源文件中从指定行号开始的几行。
l 源文件:指定函数 :显示源文件中的指定函数。#打断点
b 行号:给指定行打断点,gdb会给当前断点一个断点编号。
b 函数名:给指定函数名打断点(会打在函数首句处)。
b 源文件:行号:给源文件的指定行打断点。
b 源文件:函数名:给源文件的指定函数打断点。#查看断点信息
info b:查看所有打的断点。#删除断点
d 断点编号:删除指定断点编号的断点。#开启/禁用断点
disable 断点编号:使指定断点编号的断点失能(还是一个端点,只不过跟没打一样)。
enable 断点编号:使失能断点重新恢复为断点。#调试操作
r:运行到最近的断点处停下来,若没有断点,就运行出结果。
n:逐过程(将每一行指令都当作一个整体执行)。
s:逐语句(可以进入到函数内部)。
c:从一个断点运行到下一个断点。
finish:将一个函数运行结束,就停止。
until 行号:在一个范围内,直接运行到指定行。
bt:查看调用堆栈。
set var 变量名=需要修改的值:修改一个变量的内容(用来测多分支)。#调试中查看参数信息
p 变量名:显示指定变量名的值(非常显示,只显示一次)。
p &变量名:显示指定变量名的地址(非常显示,只显示一次)。
display 变量名:常显示指定变量的值。
display &变量名:常显示指定变量的地址。
undisplay 断点编号:取消常显示。

这里举例说明一下断点失能问题。

断点的开启和禁用就看断点信息列表中的Enb参数,y表示开启,n表示禁用(失能)。

最后,如有不足,请各位大佬多多指正!!!

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

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

相关文章

夯实数字经济的“新基建”-基于大数据与区块链技术的新型基础设施

随着我国数据市场的蓬勃发展,构建契合数据特性、加速数据流通与价值释放的新型数据基础设施变得尤为关键。数字基础设施作为数字经济蓬勃发展的基石,其完善与否直接关系到数据能否有效存储、顺畅流通及高效利用,进而促进数据资源向数据资产的…

深度学习loss

pytorch模型训练demo代码 在PyTorch中,模型训练通常涉及几个关键步骤:定义模型、定义损失函数、选择优化器、准备数据加载器、编写训练循环。以下是一个简单的PyTorch模型训练演示代码,该代码实现了一个用于手写数字识别(使用MNIS…

基于GitHub page和Hexo主题搭建个人博客(win)

1.安装git git官网下载地址:Git - Downloads (git-scm.com) (1)下载:进入官网,选择对应版本下载,得到.exe文件 (2)安装:打开.exe文件,进行如下操作 (3)安装好后,右击鼠标,点击显示…

Vue element ui分页组件示例

https://andi.cn/page/621615.html

从单个视频中重建3D场景——开启虚拟现实与数字孪生的新探索

在当今的科技前沿,人工智能与计算机视觉技术正在以前所未有的速度推动着虚拟现实(VR)、增强现实(AR)以及数字孪生(Digital Twin)领域的发展。其中,一项引人注目的研究方向是从单个视频中重建3D场景,这项技术不仅能够捕捉到场景的完整3D动态,还能处理复杂的遮挡问题,…

docker前端部署

挂载,把自己的目录位置,挂载到容器内的HTML

阿里服务器购买与java环境搭建 实践

【云服务器搭建与环境配置】 工作几年了,最近又买了个云服务器搭着玩一玩,在这里记录下搭建云服务器的过程,以及各种基础环境配置,可供初学者学习搭建云服务器的过程。 云服务器购买 这里作者搭建阿里云服务器,搭建…

Servlet1-Servlet程序、请求处理、继承体系

目录 什么是Servlet 手动实现Servlet程序 ​编辑url地址如何定位到Servlet程序去访问 Servlet的生命周期 ​编辑GET和POST请求的分发处理 通过继承HttpServlet类实现Servlet程序 IDEA菜单生成Servlet程序 Servlet类的继承体系 ServletConfig类 ServletContext类 什么…

【彩虹商城】虚拟发卡系统

运行环境: Nginx 1.22.1 Mysql5.7 PHP7.4 直接访问域名即可安装 [呵呵] 彩虹二次开发 拥有供货商系统 多余模板删除 保留一套商城,两套发卡 源码无后门隐患 已知存在的BUG修复 目前适用于卡密类型业务销售。 后续将会慢慢编写数卡权益类的对接&#xf…

神经网络的参数初始化【PyTorch】

文章目录 1、常见初始化方法2、代码2.1、导包:2.2、均匀分布随机初始化2.3、固定初始化2.4、全0初始化2.5、全1初始化2.6、正态分布随机初始化2.7、kaiming 初始化2.8、xavier 初始化2.9、完整代码 3、小节 🍃作者介绍:双非本科大三网络工程专…

科技云报道:算网筑基AI注智,中国联通如何讲出AI时代的“新故事”?

科技云报道原创。 AI从未停止进化,也从未停止给人类带来惊喜。 从ChatGPT代表的文生文、Dall-E代表的文生图,到Sora代表的文生视频,Suno为代表的文生音乐,生成式AI的“暴力美学”持续突破内容生产的天花板,大模型技术…

Pytorch基础:Tensor的view方法(非连续张量也可以使用view)

相关阅读 Pytorch基础https://blog.csdn.net/weixin_45791458/category_12457644.html?spm1001.2014.3001.5482 在Pytorch中,view是Tensor的一个重要方法,用于返回一个改变了形状,但数据和数据的顺序与原来一致的新张量,但是新张…

VSCode 解决 pylint 报错 No name QWidget in module PyQt5.QtWidgets

问题 启用了 VSCode 的 Pylint 插件, 即便 Python 环境中安装了 PyQt5, 也无法正确解析 PyQt5 的导入 PyQt5 底层代码是用 C/C 写的, pylint 默认不会深入解析 pylint doesn’t load any C extensions by default, because those can run arbitrary code. 解决 修改 Settings…

Spark实时(六):Output Sinks案例演示

文章目录 Output Sinks案例演示 一、​​​​​​​File sink 二、​​​​​​​​​​​​​​Memory Sink 三、​​​​​​​​​​​​​​Foreach Sink 1、​​​​​​​foreachBatch 2、​​​​​​​​​​​​​​foreach Output Sinks案例演示 当我们对流式…

kotlin协程-- 基础概念 ①|创建和使用

引言 首先先说一些相关概念 1.并发与并行 在操作系统中我们曾经学到过并发与并行 并发: 是同一个时刻只有一条指令在执行,其他指令没有再执行,但是由于CPU的时间片特别短,导致多个指令来回切换的时间间隔特别短,就好像是同一时间多条指令在执行。单核CPU与多核CPU都可以进…

【python】Python常见的面试题解析:深入探索与实践,助你少走弯路

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

若依ruoyi+AI项目二次开发(智能售货机运营管理系统)

(一) 帝可得 - 产品原型 - 腾讯 CoDesign (qq.com)

一些电脑的操作技巧,你知道吗?

我整理了几个电脑使用的实用技巧,能够帮你提升办公效率,一起来看看吧! 技巧一:反方向移动单元格 一般来讲,我们按下【Tab】键、【Enter】键的时候,会切换到右边或者下边的单元格,想要反向移动…

第2章 编译SDK

安装编译依赖 sudo apt-get update sudo apt-get install clang-format astyle libncurses5-dev build-essential python-configparser sconssudo apt-get install repo git ssh make gcc libssl-dev liblz4-tool \ expect g patchelf chrpath gawk texinfo chrpath diffstat …

董宇辉离职,我一点都不意外!只不过感觉来的太快

下面这张图,是我在半年多前写的一段随笔,没想到来的这么快! 碰巧的是今天中午,在开发者群里有两位老铁自曝,本以为能公司干到老,但公司却不给机会,已经不在是公司员工了。 最近,晓衡…