合并不同gdb下的相同要素_GDB调试学习

f641adacd25733766bbf3751c0776ac7.png

  • 简介

    GDB是GCC的调试工具。其功能如下:

    • 启动程序,使程序按自定义形式运行;

    • 使程序停止指定断点位置;

    • 程序停止后,检查程序执行中的相应情况;

    • 动态改变程序执行环境。

  • gdb调试

    能进行GDB调试,一般在编译过程中,需使用-g参数。如果不使用-g参数,则在gdb调试过程中,将不能得到程序的函数名、变量名等信息,而只能看见运行时内存地址。举例如下:

    启动gdb调试的方法有以下三种:

    常用的调试有以下几种:

    • b // 停在程序的指定一行

    • b // 停在程序的某个函数处

    • b * // 停在编译器生成的prolog代码处。主要用于汇编调试

    • b * // 停在代码的某个地址处

    • d // 删除断点

    • info b // 查看断点

    • r:运行被调试的程序。如果之前没有设过断点,则执行完整个程序;如果设过断点,则程序停在第一个断点处。

    • c:继续执行被调试程序,直到到下一个断点,或程序整体结束。

    • b:设置断点,包括以下几种:

    • s:执行一行源程序的代码,如果此行代码中存在函数调用,则进入该函数。

    • n:执行一行源程序的代码,此代码中的函数调用执行完成。

    • si:类似于s命令,不同的是,si针对的是汇编指令,而s针对的是源代码。

    • ni:类似于n命令,不同的是,ni针对的也是汇编指令,而n针对的是源代码。

    • p/print:打印指定变量(临时变量和全局变量)、字符串、表达式等值。

    • display …:设置程序中断后想显示的数据及其格式。如希望程序中断后显示即将被执行的下一条汇编指令,可使用如下命令:display /i

    • undisplay :取消先前的display设置,编号从1开始递增。

    • i/info:显示各类信息。

    • q:退出gdb调试环境。

    • help [命令名称]:gdb帮助命令,提供对GDB各种命令的解释说明。如果指定了“命令名称”参数,则显示该命令的详细说明;若果没有指定参数,则分类显示所有GDB命令,共用户进一步浏览和查询。

    • cd dir:运行GDB,使用dir作为gdb的工作目录。

    • se File:从File读取符号表并把它作为可执行文件。

    • -write:开通enable往可执行文件和核心文件写的权限。

    • clear:删除一个断点,这个命令需指定代行或者函数名。

    • set:设置变量的值。如set val = 2即为把2保存到val变量中;设置输入参数使用set args a b c(a,b,c分别为对应输入参数)。

    • watch:监视一个变量的值,不管它何时被改变。

    • rwatch:指定一个变量,如果这个变量被读,则暂停程序运行,在调试器中显示信息,并等待下一个命令调试。

    • Ctrl + c:在当前位置停止执行正在执行的程序,断点在当前行。

    • ptype:显示变量的类型

    • return:强制从当前函数返回。

    • whatis:显示变量的值和类型。

    • xbreak:在当前函数的退出的点上设置一个断点。

    • load:动态加载一个可执行文件到调试器。

    • ignore:忽略某个断点指定的次数。

    • finish:继续执行,直到当前函数返回。

    • disable:禁止断点功能,这个命令需要禁止的断点在断点列表索引值作为参数。

    • bt:显示程序堆栈信息。

    • l:l相当于list,从第一行开始列出源码。

    • gdb filename // 其中filename为可执行文件名

    • gdb filename core // core是程序core dump产生的文件,产生core文件,需设置栈大小无线使用ulimit -c unlimited

    • gdb filename PID // PID一般是服务程序运行时的进程ID

    • gcc test.c -o test -g

    • g++ test.cpp -o test -g

331885da74970cd2b48fa58973449372.png

这个是学校的电脑测试的,实在太饿了.我没有写完就截图一张.

f641adacd25733766bbf3751c0776ac7.png

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

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

相关文章

endnote文献顺序编号不对_把Endnote装进大脑:行走的文献管理者

是否还迷失在茫茫的文献海洋,东翻西找,仍无法获得需要的文献信息?是否还在半手动导入参考文献,费时费力?别着急,文献管理神器-Endnote轻松帮你搞定这些问题。把Endnote“装进”大脑,你就能成为行…

蔡司三坐标_蔡司三坐标测针的安装指南

1、装配和辅助工具合适的辅助工具可以在组装测针组时有效防止各部件的损坏,确保安装的安全进行。下面是几种最重要的装配和辅助工具。2、正确调整MT/VAST吸盘MT/VAST吸盘可以通过顶部的三个螺丝进行旋转调节。必须使用不超过2Nm的扭力紧固,为了防止螺丝的…

三电平igbt死区时间计算_IGBT基础与运用-2

IGBT基础与运用-1尝试去计算IGBT的开启过程,主要是时间和门电阻的散热情况。C.GE 栅极-发射极电容C.CE 集电极-发射极电容C.GC 门级-集电极电容(米勒电容)Cies CGE CGC 输入电容Cres CGC 反向电容Coes CGC CCE 输出电容根据充电的详细过程,可以下图…

在2017年从Maven工件生成P2存储库

几年前,我写了一篇博客文章,介绍如何基于Maven工件生成P2存储库。 如今,这种描述的方法已经过时了,我想展示一种基于p2-maven-plugin的新方法,该方法是为解决该问题而创建的。 Maven构建生命周期中的P2-Maven-Plugin集…

循环次数几次_圆柱模板循环使用次数是多少呢

对于同一处做同样的工程,如果需要使用的是圆柱模板,用户一定考虑到底该进多少货,备多少料(圆柱模板)呢?这就需要考虑到圆柱模板循环使用次数和错开的程度来进行决定的?建筑圆柱模板能周转几次?这可能是所有…

network 拦截不到东西是怎么做到的?_都说读中职院校学不到东西,中职学生到底是怎么学习的?...

中职院校在社会中的影响一直并不是很好,一直都是负面影响高于正面影响,那么,我们不禁就要问了,一直在喊提升中职院校的教学质量,质量提升到哪里去了呢!那些中职院校里的学生到底又是怎么学习的呢&#xff1…

数组中查找並返回数组_java数组查找常见情况

一.最简单的查找元素方法(依次比较):给一个数组,在数组里面查找某个元素在数组中的位置,并返回它的位置。public static void main(String[] args) {int arr[] new int[]{12, 4, 54, 57, 87, 3, 41, 1, 3, 4, 1, 3, 4…

阿帕奇跨域_阿帕奇骆驼遇见Redis

阿帕奇跨域键值商店的兰博基尼 Camel是最好的面包集成框架,在本文中,我将向您展示如何通过利用另一个出色的项目Redis使它更加强大。 Camel 2.11即将发布,具有许多新功能,错误修复和组件。 这些新组件中的几个是我创作的&#…

误码率越高越好还是越低越好_ISO永远都是越低越好?不一定!这些情况下要用高 ISO!...

关于摄影中的参数,在说到 ISO(感光度)的时候,大家脑海中肯定都会想到那句摄影中的定律——“使用尽可能低的 ISO ”,这是为什么呢?通过下面这张典型的高 ISO 照片我们能知道原因在图片里,那些不自然的、充斥整个画面的…

如何在Java 8中创建线程安全的ConcurrentHashSet?

在JDK 8之前,还没有办法在Java中创建大型的线程安全的ConcurrentHashSet。 java.util.concurrent包甚至没有一个名为ConcurrentHashSet的类,但是从JDK 8开始,您可以使用新添加的keySet(默认值)和newKeySet(…

删除 多个表_合并汇总多个工作簿多个工作表,删除修改新增更新内容只需刷新...

要求:1、把多个工作簿的多个工作表内容合并汇总2、后续在任一工作表内删除修改新增内容,无需再重新做表3、后续在任一工作簿中新增一个或多个工作表,无需再重新做表4、后续在文件夹中添加一个或多个Excel工作簿文件,无需再重新做表…

OAuth2,JWT,Open-ID Connect和其他令人困惑的事物

免责声明 如果觉得我必须从一个重要的免责声明开始这篇文章: 不要太相信我要说的话。 我之所以这样说,是因为我们正在讨论安全性。 而且, 当您谈论安全性时,除了100%正确的陈述外,还有冒任何其他风险的风险…

人工智能在建筑运营_打造智能建筑商

人工智能在建筑运营构建API时,您应始终考虑谁将使用它。 当API简单易用时,用户就会感到满意。 当用户满意时,每个人也都会满意。 但是出色的可用性并非总是容易实现的。 有一些模式对此有所帮助,在这篇文章中,我将重点…

alinq mysql_ALinq让Mysql变得如此简单_MySQL

当大家已经习惯了使用.net 去操作SQL Server,有多少人曾经尝试过使用.net 去操作Mysql数据库!在.net 的光环下,Mysql是显得如此微不足道!但是Mysql的开源又是如此具有诱惑。1. ADO.NET 方式连接Mysql数据库经过在网上查找资料&…

debian php mysql 安装_在 Debian 下安装 Apache,MySQL,PHP

我是转载过来的,原地址 http://blog.csdn.net/youngdze/article/details/20455557 ,我安装成功!首先,对你的源进行更新:$ sudo apt-get update第一步--安装 ApacheApache 是一个开源软件,它目前运行在全球超过 50% 的服务器上&…

java ee cdi_Java EE CDI bean范围

java ee cdiJava EE平台的上下文和依赖注入(CDI)是一项功能,有助于将Java EE平台的Web层和事务层绑定在一起。 CDI是一组服务,可以一起使用,使开发人员可以轻松地在Web应用程序中使用企业bean和JavaServer Faces技术。…

airflow mysql_Airflow 使用及原理分析

Airflow 入门及使用什么是 Airflow?Airflow 是一个使用 Python 语言编写的 Data Pipeline 调度和监控工作流的平台。Airflow 是通过 DAG(Directed acyclic graph 有向无环图)来管理任务流程的任务调度工具,不需要知道业务数据的具体内容,设置…

wps怎么旋转页面_用WPS文字编辑一份试卷,详细教程来了,老师们赶快收藏吧

​ 试卷是每一个教师接触最多的资料了,很多教师在检测前找一些现成的试卷复印给学生练习,但是,有很多题不适合学生,因此,我们需要自己编辑一份试卷了,编辑试卷也并不是很难的,今天,就…

Java命令行界面(第15部分):Jargo

Jargo在其GitHub主页上定义为“一种减轻程序参数/选项处理的工具”。 当已经存在许多其他命令行处理库时,该页面为另一个命令行处理库提供了基本原理 ,该列表的顶部是“因为类型安全性,不变性和可读性很重要”。 Jargo的选项“定义”阶段使用…

java中序列化与反序列化_Java中的序列化

java中序列化与反序列化Java提供了一种称为序列化的机制,以按字节的有序或字节序列的形式持久化Java对象,其中包括对象的数据以及有关对象的类型和存储在对象中的数据类型的信息。 因此,如果我们已序列化了任何对象,则可以使用对象…