Linux的调试工具 - gdb(超详细)

news2024/12/28 3:44:40

Linux的调试工具 - gdb

  • 1. 背景
  • 2. 开始使用
    • 指令的使用都用下面这个C语言简单小代码来进行演示:
    • 1. list或l 行号:显示文件源代码,接着上次的位置往下列,每次列10行。
    • 2. list或l 函数名:列出某个函数的源代码。
    • 3. r或run: 运行程序。
    • 4. break或b 行号:在某一行设置断点
    • 5. n或next:单条执行(类似vs中的F10)
    • 6. s或step:进入函数调用(类似vs中的F11)
    • 7. break 函数名:在某个函数开头设置断点
    • 8. info break或info b:查看断点信息。
    • 9. finish:执行到当前函数返回,然后挺下来等待命令
    • 10. p 变量:打印变量值。
    • 11. continue或c:从当前位置开始连续而非单步执行程序
    • 12. run或r:从开始连续而非单步执行程序
    • 13. delete breakpoints:删除所有断点
    • 14. delete breakpoints n:删除序号为n的断点
    • 15. disable breakpoints:禁用断点
    • 16. enable breakpoints:启用断点
    • 17. display 变量名:跟踪查看一个变量,每次停下来都显示它的值
    • 18. undisplay:取消对先前设置的那些变量的跟踪
    • 19. until X(行号):跳至X行
    • 20. breaktrace或bt:查看各级函数调用及参数
    • 21. q或quit:退出gdb

1. 背景

  • 程序的发布方式有两种,debug模式和release模式
  • Linux gcc/g++出来的二进制程序,默认是release模式
  • 要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项,发布成debug模式
    在这里插入图片描述

2. 开始使用

指令的使用都用下面这个C语言简单小代码来进行演示:

  1 #include <stdio.h>
  2 
  3 int SumAdd(int x)
  4 {
  5     int i=1;
  6     int sum=0;
  7     for(i=1;i<=x;i++)
  8     {
  9         sum+=i;
 10     }
 11     return sum;
 12 }
 13 
 14 int main()
 15 {
 16     printf("%d \n",SumAdd(100));
 17     return 0;
 18 }            

1. list或l 行号:显示文件源代码,接着上次的位置往下列,每次列10行。

例:l 0

在这里插入图片描述


2. list或l 函数名:列出某个函数的源代码。

例:l SumAdd

在这里插入图片描述


3. r或run: 运行程序。

注: 如果没有断点,程序将运行到底

例:r

在这里插入图片描述


4. break或b 行号:在某一行设置断点

例:b 3

在这里插入图片描述


5. n或next:单条执行(类似vs中的F10)

注: 单条执行需要在调试启动的情况下进行,需要先打断点,然后r执行到断点位置

例:n

在这里插入图片描述


6. s或step:进入函数调用(类似vs中的F11)

例:s

在这里插入图片描述


7. break 函数名:在某个函数开头设置断点

例:break SumAdd

在这里插入图片描述


8. info break或info b:查看断点信息。

例:info b

在这里插入图片描述


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

例:finish

在这里插入图片描述


10. p 变量:打印变量值。

例:p sum

在这里插入图片描述


11. continue或c:从当前位置开始连续而非单步执行程序

例:c

在这里插入图片描述


12. run或r:从开始连续而非单步执行程序

r

在这里插入图片描述

13. delete breakpoints:删除所有断点

例;delete breakpoints

在这里插入图片描述


14. delete breakpoints n:删除序号为n的断点

delete breakpoints 5

在这里插入图片描述


15. disable breakpoints:禁用断点

例:disable breakpoints

在这里插入图片描述


16. enable breakpoints:启用断点

例:enable breakpoints

在这里插入图片描述


17. display 变量名:跟踪查看一个变量,每次停下来都显示它的值

例:display sum

在这里插入图片描述


18. undisplay:取消对先前设置的那些变量的跟踪

例:undisplay

在这里插入图片描述


19. until X(行号):跳至X行

例:until 11

在这里插入图片描述


20. breaktrace或bt:查看各级函数调用及参数

例:bt

在这里插入图片描述


21. q或quit:退出gdb

例:q

在这里插入图片描述

(本章完)

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

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

相关文章

链队列的基本操作(带头结点,不带头结点)

结构体 typedef struct linknode{int data;struct linknode* next;后继指针 }linknode; typedef struct {linknode* front, * rear;//队头队尾指针 }linkquene; 初始化队列&#xff08;带头结点&#xff09; int initquene(linkquene* q)//初始化队列 {q->front q->r…

geant4创建自己的physicslist(以电磁物理为例)

1 基本概念 1.1 需要创建一个类继承 G4ModularPhysicist 每个physics都是继承 G4PhysicsConstruct Physicslist 由很多 physics组成&#xff0c;physics里面包含很多的process,也就是物理过程,光电效应就是一个process 1.2 model的概念:实现proces,一个process可以对应多个…

阿里云无影云电脑有什么用?常用使用场景说明

阿里云无影云电脑是一种易用、安全、高效的云上桌面服务&#xff0c;阿里云无影云电脑可用于高数据安全管控、高性能计算等要求的金融、设计、视频、教育等领域&#xff0c;适用于多种办公场景&#xff0c;如远程办公、多分支机构、安全OA、短期使用、专业制图等。阿里云百科来…

ES6(二)

文章目录 对象的扩展对象的展开运算符Object.is()Object.assign() 字符串的扩展includes(), startsWith(), endsWith()repeat()padStart()&#xff0c;padEnd()trimStart()&#xff0c;trimEnd() 运算符扩展指数运算符 Set方法应用 Map方法 对象的扩展 ES6 允许在大括号里面&a…

DC系列靶机5通关教程

信息收集 主机扫描 sudo arp-scan -l端口扫描 nmap -p- -A 192.168.16.172漏洞发现 浏览器访问靶机IP 在Contact找到类似提交数据的地方 点击submit&#xff0c;数字发生变化。不断刷新的话&#xff0c;数字依然会发生变化 使用bp抓包发送重发器查看数据包 再次点击发送查看…

修改了Android Studio 中的这两个面板配置后,代码写的更舒服了~

本文已同步发表于我的微信公众号&#xff0c;微信搜索 代码说 即可关注&#xff0c;欢迎与我沟通交流。 一、 增加打开文件的数量及展示方式 如图&#xff0c;默认AS中打开的文件个数是10个&#xff0c;当超过10个时&#xff0c;超过的部分会直接隐藏&#xff0c;甚至会直接把之…

TCP详解之重传机制

TCP详解之重传机制 TCP 实现可靠传输的方式之一&#xff0c;是通过序列号与确认应答。 在 TCP 中&#xff0c;当发送端的数据到达接收主机时&#xff0c;接收端主机会返回一个确认应答消息&#xff0c;表示已收到消息。 但在错综复杂的网络&#xff0c;并不一定能如上图那么顺…

Oracle SQL操作和查询

文章目录 一、SQL简介二、数据类型讲解三、创建表和约束1.表结构2. 更新表结构3.约束 四、DML语句1.INSERT2.序列号3.UPDATE4.删除语句5.多行插入 五、DQL语句1.简单查询语句1.1 知识点讲解1.2 案例讲解 2.聚合函数3.分组查询4.多表查询 一、SQL简介 SQL是结构化查询语言&…

Procmon.exe在cuckoo中的使用

背景 最近研究了下procmon.exe&#xff0c;该工具用途可大了&#xff0c;Procmon是微软出品用于监视Windows系统里程序的运行情况&#xff0c;监视内容包括该程序对注册表的读写、 对文件的读写、网络的连接、进程和线程的调用情况&#xff0c;procmon 是一款超强的系统监视软…

typescript字面量类型

typescript 字面量介绍 在TypeScript中&#xff0c;字面量是指在代码中直接使用的具体值&#xff0c;如字符串、数字、布尔值等。字面量类型是TypeScript中的一种特殊类型&#xff0c;它用于定义一组有限的值&#xff0c;并且可以在定义变量或函数时使用字面量作为具体值&…

基于Java的养老院管理系统的设计与实现(亮点:多角色、登录验证码、留言反馈)

养老院管理系统 一、前言二、我的优势2.1 自己的网站2.2 自己的小程序&#xff08;小蔡coding&#xff09;2.3 有保障的售后2.4 福利 三、开发环境与技术3.1 MySQL数据库3.2 Vue前端技术3.3 Spring Boot框架3.4 微信小程序 四、功能设计4.1 主要功能描述 五、系统实现5.1 养老院…

【基础篇】四、SpringBoot整合第三方技术

文章目录 1、SpringBoot整合Junit2、SpringBoot整合MyBatis3、SpringBoot整合MyBatisPlus4、SpringBoot整合Druid 1、SpringBoot整合Junit 步骤&#xff1a; 导入测试对应的starter测试类使用SpringBootTest修饰使用自动装配的形式添加要测试的对象 SpringBootTest class Spri…

IDEA(2023)解决运行乱码问题

&#x1f607;作者介绍&#xff1a;一个有梦想、有理想、有目标的&#xff0c;且渴望能够学有所成的追梦人。 &#x1f386;学习格言&#xff1a;不读书的人,思想就会停止。——狄德罗 ⛪️个人主页&#xff1a;进入博主主页 &#x1f5fc;专栏系列&#xff1a;无 &#x1f33c…

Nginx 相关介绍(Nginx是什么?能干嘛?)

Nginx的产生 没有听过Nginx&#xff1f;那么一定听过它的"同行"Apache吧&#xff01;Nginx同Apache一样都是一种WEB服务器&#xff0c;基于REST架构风格&#xff0c;以统一资源描述符(Uniform Resources Identifier)URI或者统一资源定位符(Uniform Resources Locator…

【算法专题突破】滑动窗口 - 串联所有单词的子串(15)

目录 1. 题目解析 2. 算法原理 3. 代码编写 写在最后&#xff1a; 1. 题目解析 题目链接&#xff1a;30. 串联所有单词的子串 - 力扣&#xff08;LeetCode&#xff09; 这道题其实也很好理解&#xff0c;看一下示例就基本知道是什么意思了&#xff0c; 主要就是找 s 里面…

day21算法

常见的七种查找算法&#xff1a; ​ 数据结构是数据存储的方式&#xff0c;算法是数据计算的方式。所以在开发中&#xff0c;算法和数据结构息息相关。今天的讲义中会涉及部分数据结构的专业名词&#xff0c;如果各位铁粉有疑惑&#xff0c;可以先看一下哥们后面录制的数据结构…

Ubuntu不能上网解决办法

问题及现象 Ubuntu的虚拟机&#xff08;18.04&#xff09;总是莫名就不能上网了。 使用ifconfig -a 查看&#xff0c;ensxx&#xff08;xx为虚拟机分配的id号&#xff09;对应的网卡有mac地址&#xff0c;但是没有分配ip地址。 Network中也没有Wired的选项。 临时解决方案 使…

深入学习 Redis Cluster - 集群缩容(全网最详细)

目录 一、集群缩容 1.1、准备环境 1.2、第一步&#xff0c;删除从节点 1.3、第二步&#xff0c;重新分配 slots 第一次分配&#xff1a;分配给 106 1365 个 slots 第二次分配&#xff1a;分配给102 1365 个 slots 此时查看集群状态&#xff0c;可以看到 110 节点不再持有…

【技术分享】NetLogon于域内提权漏洞(CVE-2020-1472)

一、漏洞介绍 CVE-2020-1472是一个Windows域控中严重的远程权限提升漏洞。攻击者在通过NetLogon&#xff08;MS-NRPC&#xff09;协议与AD域控建立安全通道时&#xff0c;可利用该漏洞将AD域控的计算机账号密码置为空&#xff0c;从而控制域控服务器。该漏洞适用于Win2008及后…

C#实现钉钉自定义机器人发送群消息帮助类

一、自定义机器人发送群消息使用场景 在企业中,针对一些关键指标内容(如每天的生产产量、每天的设备报警信息等信息),需要同时给多人分享,此时就可以将需要查看这些数据的人员都拉到一个群中,让群里的机器人将这些关键指标内容推送到群里即可【(目前已实现在钉钉群里创建…