Linux调试器:gdb的使用

news2024/12/24 2:38:23

我们知道在Visual Studio2022中,我们可以对编好的代码进行调试来分析dug的位置,那Linux环境下如何进行程序的调试呢?那就是使用Linux调试器:gdb。

目录

1.背景

2. 开始使用


1.背景

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

Makefile的用法可以看我之前的文章,这里知道gcc编译时加 -g 选项即可。

release版本比debug版本的可执行程序所占空间要小,因为debug模式下要在文件内保存相关的调试信息,大家可以自己生成两个版本的文件比较一下。

2. 开始使用

 我们先写一个可以1到100的累加mycode.c源文件,把它以debug模式编译。

 下面命令中要注意命令中间的空格!

进入gdb调试:gdb 可执行文件名称

gdb 退出: ctrl + d 或 quit (q)调试命令:

  • list/l   行号:显示 mycode.c 源代码,接着上次的位置往下列,每次列10行。

  • list/l   函数名:列出某个函数的源代码。
  • r或run:运行程序。开始调试,如果没有断点会直接执行完整个程序。
  • n 或 next:单条执行。遇到函数不会进入。
  • s或step:进入函数调用。会进入函数。
  • break(b)   行号:在某一行设置断点
  • break(b)   函数名:在某个函数开头设置断点
  • info   break(b) :查看断点信息。

  • finish:执行到当前函数返回,然后停下来等待命令(即执行完整个函数)
  • print(p):打印表达式的值,通过表达式可以修改变量的值或者调用函数
  • p   变量:打印变量值。
  • set   var:修改调试中变量的值
  • continue(或c):从当前位置开始连续而非单步执行程序,执行到下一个断点。
  • run(或r):从开始连续而非单步执行程序
  • delete  breakpoints:删除所有断点
  • delete breakpoints n:删除序号为n的断点
  • disable breakpoints:禁用断点,
  • enable breakpoints:启用断点

  • info(或i)  breakpoints(b):参看当前设置了哪些断点
  • display  变量名:跟踪查看一个变量,每次停下来都显示它的值
  • undisplay:取消对先前设置的那些变量的跟踪

  • until X行号:执行到X行停下来,但是中间有断点也会停下来。
  • breaktrace(或bt):查看各级函数调用及参数,就是vs下的调用堆栈。
  • info(i) locals:查看当前栈帧局部变量的值,不用自己输入。
  • quit:退出gdb

本篇结束!

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

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

相关文章

mysql的行列互转

mysql的行列互转 多行转多列思路实现代码 多列转多行思路代码 多行转多列 多行转多列,就是数据库中存在的多条具有一定相同值的行数据,通过提取相同值在列头展示来实现行数据转为列数据,一般提取的值为枚举值。 思路 转换前表样式 -> 转…

从 0 开始手写一个 Mybatis 框架,三步搞定!

MyBatis框架的核心功能其实不难,无非就是动态代理和jdbc的操作,难的是写出来可扩展,高内聚,低耦合的规范的代码。本文完成的Mybatis功能比较简单,代码还有许多需要改进的地方,大家可以结合Mybatis源码去动手…

打开游戏提示xapofx1_5.dll丢失如何修复?xapofx1_5.dll缺失的修复教程分享

xapofx1_5.dll是一个重要的Windows系统文件,它主要负责处理图形渲染和多媒体功能。如果在计算机中找不到xapofx1_5.dll,可能会导致程序无法正常运行。下面是关于xapofx1_5.dll丢失的4个修复方法以及xapofx1_5.dll的作用和丢失原因的介绍。 一、xapofx1_…

MySQL 教程 1.2

上期教程网友笔记整理 MySQL 重置密码 如果你忘记 MySQL 密码,可以通过修改 my.cnf 文件添加 skip-grant-tables 来重置密码,步骤如下: 1、打开 my.cnf 配置文件,找到 [mysqld] ,然后在该行下面添加以下参数&#x…

基于STM32CubeMX和keil采用RTC时钟周期唤醒和闹钟实现LED与BEEP周期开关

文章目录 前言1. RTC概念1.1 RTC的时钟信号源1.2 预分频器1.3 实时时钟与日历数据1.4 周期性自动唤醒1.5 可编程闹钟 2. RTC相关中断3. STM32CubeMX配置3.1 时钟配置3.2 引脚配置3.3 RTC配置3.3.1 模式选择3.3.2 RTC基本参数配置3.3 中断配置 4. 代码编写总结 前言 RTC的功能有…

数据结构与算法之美学习笔记:22 | 哈希算法(下):哈希算法在分布式系统中有哪些应用?

目录 前言应用五:负载均衡应用六:数据分片应用七:分布式存储解答开篇 & 内容小结 前言 本节课程思维导图 今天,我们再来看剩余三种应用:负载均衡、数据分片、分布式存储。你可能已经发现,这三个应用都…

volatile 无法保证原子性 案例展示

volatile 无法保证原子性 在 Java 中,原子性是指一个操作是不可中断的,要么都执行要么都不执行。 但是 volatile 修饰的变量,只是保证了从主内存加载到工作内存的值是最新的,并不能保证对变量的操作是原子性的 变量的写操作和读…

在线生成含logo的彩色二维码工具

具体请前往:在线二维码生成工具--可生成指定大小和颜色的彩色二维码图片,并支持Logo

arcgis属性表十进制度转换成度分秒格式--转换坐标注记法

1、有一组点数据,如下: 2、为其添加XY坐标,如下: 打开属性表,可得到对应点的XY的十进制度坐标,如下: 3、将十进制度转换成度分秒格式,如下,使用转换坐标注记法工具&#…

支付、结算、对账流程

1、支付过程概览 2、微信支付流程 以微信支付为例,用户使用北京银行,商户收款银行为工行银行,列出机构名 用户在商户处选购商品或服务,选择使用微信支付进行付款。用户打开微信支付,输入支付密码或进行指纹识别等身份验证。微信支付系统将支付请求发送给北京银行。北京银行…

Java Web 实战 20 - HTTP PK HTTPS ? HTTPS 大获全胜 ?

HTTP VS HTTPS 一 . HTTPS1.1 臭名昭著的运营商劫持1.2 加密是什么 ?1.3 HTTPS 的加密过程对称加密非对称加密引入 "证书" 机制 1.4 HTTP VS HTTPS Hello , 大家好 , 好久没有更新 JavaWeb 模块的内容了 . 博主这篇文章主要给大家讲解一下 HTTPS 以及与 HTTP 的区别…

“新KG”视点 | 知识图谱与大语言模型协同模式探究

OpenKG 大模型专辑 导读 知识图谱和大型语言模型都是用来表示和处理知识的手段。大模型补足了理解语言的能力,知识图谱则丰富了表示知识的方式,两者的深度结合必将为人工智能提供更为全面、可靠、可控的知识处理方法。在这一背景下,OpenKG组织…

laravel-admin导出excel全部,表中无id列导出失败

laravel-admin导出excel时,导出全部数据,但是表中没有id字段,然后就无法导出excel; 就直接显示 一开始我也很着急,弄了半天还是不行,然后重写还是有问题 最后发现底层代码排序是按照id排序的orderBy(id, a…

贝锐蒲公英助力智慧楼宇,实现自控系统远程运维、数据实时监测

在智慧楼宇系统中,存在着多套不同的系统,比如:智能照明控制、智能空调控制、智能安防监控等。在实际应用中,除了需要打通楼内各个系统实现智能联动,如何实现各地多楼宇的数据实时互通构建智慧楼宇生态系统也是需要解决…

webservice笔记

1,简介 webservice,是一种跨编程语言和跨操作系统平台的远程调用技术。 webservice三要素:soap、wsdl、uddi2,服务端 2.1创建项目 2.2 编写服务类,并发布服务 import com.test.service.impl.HelloServiceImpl; impo…

文件重命名最佳实践:如何确保文件名的准确性和一致性

在日常生活和工作中,经常需要处理大量的文件,包括电子文件和纸质文件。文件重命名是为了更好地组织和管理这些文件,以方便查找和使用。然而,重命名文件并不是一件简单的事情,它需要遵循一定的最佳实践以确保文件名的准…

基环树(pseudotree)入门

目录 无向基环树找环,[题目](https://www.luogu.com.cn/problem/P8655)拓扑排序找环并查集找环dfs找环 内向基环树[2876. 有向图访问计数](https://leetcode.cn/problems/count-visited-nodes-in-a-directed-graph/description/)[2127. 参加会议的最多员工数](https…

公司内部网络架设悟空CRM客户管理系统 cpolar无需公网IP实现内网,映射端口外网访问

1、什么是内网穿透? 内网穿透,即内网映射,内网IP端口映射到外网的过程。是一种主动的操作,需要本人一些内网的权限。比如在公司自己电脑,将办公OA发布到互联网,然后提供外网在家或出差在外连接访问。 可以…

动态改标题

<el-dialog :title"showTitle" :visible"showDialog" close"close"> </el-dialog>使用计算属性 computed: {showTitle() {//这里根据点击的是否有具体点击的那个id来判断return this.form.id ? "编辑部门" : "新增部…