【Linux】gdb调试器的使用

news2024/11/15 17:47:29

All is well that ends well.结果好就是好。

个人主页:阿润菜菜


简介

GDB是GNU开源组织发布的一个强大的Linux下的程序调试工具

Windows 操作系统中,我们更习惯使用一些已经集成好的开发环境(IDE),如 VS、VC、Dev-C++ 等,它们的内部已经嵌套了相应的调试器。但是正如从事 Windows C/C++ 开发的一定要熟悉 Visual Studio、从事 Java 开发的要熟悉 Eclipse 或 IntelliJ IDEA、从事 Android 开发的要熟悉 Android Studio、从事 iOS 开发的要熟悉 XCode 一样,从事 Linux C/C++ 开发要熟悉 GDB。“工欲善其事、必先利其器”,作为一名合格的软件开发者,至少得熟悉一种软件开发工具和调试器, 对于 Linux C/C++ 后台开发,掌握GDB的使用显得尤为重要

 使用方法

安装:

Centos下:sudo yum -y install gdb

Ubuntu下:sudo apt-get -y install gdb

GDB调试的对象 

gdb调试对象一定要是可执行文件而不是.c文件 。且应该是gcc编译生成的debug版本,这样才可以通过gdb对程序进行调试。

具体gcc命令如下:

gcc  -g  源文件.c  -o  目标文件

-g,-o参数缺一不可

mytest_g:mytest.c
	gcc mytest.c -g -o mytest

常用命令表 

常用命令汇总表
命令名称缩写说明
run r调试运行
breakb +行号添加断点
infoinfo

调试相关详细信息显示

info b  查看断点

info locals 显示当前局部变量信息

enableenable启用某个断点
disabledisable禁用某个断点
deleted + 编号删除某个断点
listl显示代码
backtracebt查看当前线程调用的堆栈
nextn

单步调试

(逐过程,函数直接执行)

steps

单步调试

(逐语句:跳入自定义函数内部执行)

continuec继续运行到下一个断点处
finishfi

结束当前调用函数,

回到上一层函数调用处

printp

单次查看变量值或内存地址

displaydisplay

追踪查看变量值或内存地址

类似(监视窗口)

undisplayundisplay取消追踪查看变量
untilu + 行号跳转到指定行
set varset var 设置变量的值
quitq退出gdb

本节完

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

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

相关文章

LeetCode461. 汉明距离,x与y异或,之后用f(x)=x (x−1))次数与Integer.bitCount求二进制1的个数

两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。 给你两个整数 x 和 y,计算并返回它们之间的汉明距离。 1.x ^ y异或,用f(x)x & (x−1))次数求二进制中1的个数,那么 f(x) 恰为x删去其二进制表示中…

C语言_文件操作(上)

目录 1. 什么是文件 2. 文件名 3. 文件类型 4. 文件缓冲区 5. 文件指针 6. 文件的打开和关闭_fopen_fclose 7. 文件的顺序读写 7.1 fputc 7.2 fgetc 7.3 fputs 7.4 fgets 7.5 fscanf 7.6 fprintf 7.7 fread 7.8 fwrite 7.9 对比scanf/printf、fscanf/fprintf、…

java实现dwg转pdf

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、无奈选择第二种二、jar引入1.jar地址2.使用jar,完成dwg转为pdf总结前言 由于公司需要最近研究一个cad文件需要在浏览器中展示,经过研究发现大致有两种方式:…

JVM-围观如何打破双亲委派机制

下面手把手用代码来实现打破JVM的双亲委派机制一、Tomcat打破双亲委派机制以Tomcat类加载为例,Tomcat作为web容器, 那么它要解决什么问题呢?Tomcat 如果使用默认的双亲委派类加载机制行不行?1.1 Tomcat作为web容器, 那…

科技云报道:CES 2023:自动驾驶、元宇宙备受瞩目

科技云报道原创。 在被疫情扰乱了两年之后,2023年CES终于回归正常了。 1月5日-8日,CES 2023在拉斯维加斯举行。作为当前全球规模最大、影响力最广泛的消费类电子技术年展,本届展会涵盖的重要主题包括可持续性、数字健康、Web3与元宇宙以及人…

教你如何快速使用店铺管理系统

一、客户管理1、客户资料客户资料报表展示所有新客的数据信息,在此报表可进行会员开卡及新增客户操作;提交会员开卡表单之后,由数据助手更新该客户的会员卡信息至客户信息表单;点击新增客户弹出客户信息表单,默认客户分…

python自学之《21天学通Python》(8)

第11章 文件与文件系统 编写程序来解决实际项目时,很多时候都离不开文件和文件系统的操作。程序本身就是保存在文件系统的文件中的。文件既可以保存程序代码,也可以用来保存各种输入与输出数据。文件和文件系统的处理是任何高级程序设计语言必不可少的一…

Node.js教程笔记(一)

学习目标 1、初识Nodejs 2、fs文件系统模块 3、path路径模块 4、http模块 一、初识Node.js 1.1 浏览器中的JavaScript的运行环境 1、浏览器中的JavaScript的组成部分 2、为什么JavaScript可以在浏览器中被执行? 3、为什么JavaScript可以操作Dom和Bom&#xff…

智公网:公务员的专业限制有哪些?

公务员报考的要求越来越高了,尤其是限制专业这一块,直接阻断了很多人想要跨专业的想法。但是没有办法专业这个条件是硬性的,所以在报考之前一定要看清报考要求。 公务员性质也是比较特殊的,像是一些比较热门专业,在公…

线程安全☞原子性

何为原子性? 原子性:一条线程在执行一系列程序指令操作时,该线程不可中断。一旦出现中断,那么就可能会导致程序执行前后的结果不一致。与数据库中的原子性(事务管理体现)是相同的 概括:一段程序只能由一条…

Go语言设计与实现 -- 浅谈垃圾回收机制

概述 GC就是垃圾回收机制。而我们知道,内存区域是分成几个块儿的,例如: 堆区:为对象分配内存空间,在栈区和bss区之间存放函数参数,返回值,局部变量全局区:常量区(const…

第一批“阳康”涌向三亚,最大的赢家或是携程

在2022年接近尾声时,给居民出行带来近三年困扰的疫情防控,终于迎来了好消息。随着国家“新十条”防控新政策的出台以及优化,过去出门不便、频繁查验核酸码的时代一去不返。尤其是各地逐步放宽出入境管控政策后,在线旅游行业也迎来…

PMP的价值有哪些?

我个人认为,考证只有两个出发点是正确的。一是为了提升自己或者满足自己的兴趣,另一个是和自己的职业规划相关。 比如,有同学想提升自己英语能力,可以考四六级,或者更厉害一点的考雅思、托福。比如,有的同…

电脑自动关机是什么原因?4个解决方法,赶紧码住收藏!

正在使用电脑,突然自动关机。如果没有及时保存好资料,我们辛辛苦苦写的资料就会付诸东流。电脑自动关机是什么原因?其实主要是以下这4个方面的原因。你可以根据下面不同的原因来对症下药,寻找解决电脑自动关机的最好方法&#xff…

直播弹幕系统(七)- 利用动态创建队列完成直播间独立聊天

直播弹幕系统(七)- 利用动态创建队列完成直播间独立聊天前言一. 动态创建队列1.1 测试 - 动态创建队列1.2 测试 - 聊天室独立前言 上一篇 SpringBoot STOMP RabbitMQ(使用MQ替代Spring代理) 中主要讲解了如何整合STOMP以及Rabb…

Vue条件语句中v-if、v-else、v-else-if的用法

文章目录1、v-if和v-else结合使用1.1 出现的错误2、v-if、v-else-if和v-else的联合使用2.1 出现的错误3、如果想要同时切换多个元素3.1 效果展示1、v-if和v-else结合使用 v-else 元素必须紧跟在带 v-if 或者 v-else-if 的元素的后面&#xff0c;否则它将不会被识别。 <span…

智能指针(二) shared_ptr 注意点

智能指针(二) shared_ptr 注意点 1 不存在 int * 到 shared_ptr 的隐式类型转换 void proc(shared_ptr<int> ptr) {cout << "ptr.use_count()" << ptr.use_count() << endl;cout << "调用成功" << endl;return; }in…

独立产品灵感周刊 DecoHack #043 - 互联网从业者的灵感数据库

本周刊记录有趣好玩的独立产品设计开发相关内容&#xff0c;每周发布&#xff0c;往期内容同样精彩&#xff0c;感兴趣的伙伴可以点击订阅我的周刊。为保证每期都能收到&#xff0c;建议邮件订阅。欢迎通过 Twitter 私信推荐或投稿。很完美的断更了2期&#xff0c;有一期是因为…

RFID技术和NFC技术的原理及区别,你都了解吗?

物联网是信息技术发展的重要推动力&#xff0c;推动了农业、工业、制造业、服务业等多个行业的发展&#xff0c;物联网主要由三个关键技术组成&#xff0c;即连接、物体标识和数据传输&#xff0c;人们把RFID技术作为物体标识的代表&#xff0c;随着技术的进步起源于RFID技术的…

谷粒商城-基础篇-Day07-品牌分类关联与级联更新

将品牌分类和品牌名称的关系放在pms_category_brand_relation表中 获取该列表品牌所有的关联信息 /*** 列表*/GetMapping("/catelog/list")public R list(RequestParam("brandId") Long brandId){List<CategoryBrandRelationEntity> datacategoryBra…