Linux_ubuntu中进行断点调试

news2024/9/29 7:23:06

文章目录

  • 一、安装gdb调试器:
  • 二、使用gcc编译程序:
  • 三、使用gdb对程序进行调试:
    • 1.设置断点:使用break命令或简写为b来设置断点
    • 2.调试运行——run:
    • 3.继续执行——continue/c:
    • 4.单步执行:
    • 5.监视变量:
    • 6.退出gdb调试器——quit:

一、安装gdb调试器:

终端输入命令:

sudo apt-get update  
sudo apt-get install gdb

二、使用gcc编译程序:

使用GCC编译你的程序时,加上-g选项以包含调试信息:

gcc -g -o myprogram myprogram.c

三、使用gdb对程序进行调试:

推荐:

gdb -tui myprogram

在这里插入图片描述

1.设置断点:使用break命令或简写为b来设置断点

第一种:break + 函数名:

(gdb)break main

第二种:break + 某个文件的特定行:

(gdb)break main.c:11

2.调试运行——run:

输入run程序将开始执行遇到断点时停下:

(gdb)run

在这里插入图片描述

3.继续执行——continue/c:

(gdb)continur
或者
(gdb)c

想要程序继续执行输入continue或者c,程序会继续执行,遇到断点时停下:
在这里插入图片描述

4.单步执行:

1.使用next命令:

  • next命令(简写为n):用于执行当前行的代码,并进入下一行。如果当前行包含函数调用,next命令会将整个函数视为单步执行,而不会进入函数内部。
(gdb) next

2.使用step命令:

  • step命令(简写为s)也用于单步执行代码,但不同的是,如果当前行包含函数调用,step命令会进入函数内部并逐行执行。这对于跟踪函数内部的执行非常有用。
(gdb) step

3.使用until命令:

  • until命令可以运行程序直到退出当前循环体或到达指定的代码行。这对于快速跳过循环或执行到特定位置很有用。
(gdb) until line_number

5.监视变量:

1.使用print或p命令:

  • 这是最直接的方法。你可以在GDB的命令行中输入print 变量名或简写为p 变量名来查看变量的当前值。例如,如果你有一个名为x的变量,你可以输入p x来查看其值。如果程序在执行过程中改变了x的值,你可以再次使用p x来查看新的值。
(gdb)print b
(gdb)p b

2.使用display命令:(推荐)

  • 如果你想要在每次程序暂停时都自动显示某个变量的值,可以使用display命令。例如,display x会在每次断点或程序暂停时自动打印变量x的值。这对于观察频繁变化的变量特别有用。
(gdb)display b

3.使用watch命令:

  • watch命令允许你设置一个观察点,当指定的变量或表达式的值发生改变时,程序会自动暂停。这对于实时监控某个变量的变化非常有用。例如,watch x会在变量x的值发生改变时暂停程序。
(gdb)watch b
//记住必须要在变量b已经被创建的情况下才有效

在这里插入图片描述
4.使用info locals命令:

  • 这个命令可以列出当前作用域内的所有局部变量及其值。这对于快速查看多个变量的当前状态很有帮助。
(gdb)info locals

在这里插入图片描述

6.退出gdb调试器——quit:

  • 如果你现在想要退出GDB,只需在GDB的命令行提示符下输入quit,然后按Enter键。
(gdb)quit

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

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

相关文章

6.windows ubuntu 子系统 测序数据质量控制。

上一个分享,我们对测序数据进行了质量评估,接下来我们需要对数据进行数据质量控制。 数据预处理(Data Preprocessing):包括去除接头序列(adapter trimming)、去除低质量序列(qualit…

【Spring Boot 源码学习】共享 MetadataReaderFactory 上下文初始化器

《Spring Boot 源码学习系列》 共享 MetadataReaderFactory 上下文初始化器 一、引言二、往期内容三、主要内容3.1 源码初识3.2 CachingMetadataReaderFactoryPostProcessor3.2.1 register 方法3.2.1 configureConfigurationClassPostProcessor 方法 3.3 ConfigurationClassPos…

SpringMVC结合设计模式:解决MyBatisPlus传递嵌套JSON数据的难题

🎉🎉欢迎光临,终于等到你啦🎉🎉 🏅我是苏泽,一位对技术充满热情的探索者和分享者。🚀🚀 🌟持续更新的专栏《Spring 狂野之旅:从入门到入魔》 &a…

Learn OpenGL 24 点光源阴影

点光源阴影 上个教程我们学到了如何使用阴影映射技术创建动态阴影。效果不错,但它只适合定向光,因为阴影只是在单一定向光源下生成的。所以它也叫定向阴影映射,深度(阴影)贴图生成自定向光的视角。 本节我们的焦点是…

Java进阶—GC回收(垃圾回收)

1. 什么是垃圾回收 垃圾回收(Garbage Collection,GC)是Java虚拟机(JVM)的一项重要功能,用于自动管理程序中不再使用的内存。在Java中,程序员不需要手动释放内存,因为GC会自动检测并回收不再使用的对象,从而减少内存泄…

Java基础【上】韩顺平(反射、类加载、final接口、抽象类、内部类)

涵盖知识点:反射、类加载、单例模式、final、抽象类、接口、内部类(局部内部类、匿名内部类、成员内部类、静态内部类) P711 反射机制原理 创建如下目录结构,在模块下创建src文件夹,文件夹要设置为Sources文件夹&…

Git使用:实现文件在不同设备之间进行同步

一、注册Gitee,创建远程仓库 注册网址:登录 - Gitee.com 打开Gitee,注册完进行登录,点击右上角【】创建一个仓库 新建仓库: 点击创建,仓库创建完毕。 二、下载Git安装包,并创建本地仓库 下载网…

正则表达式具体用法大全~持续更新

# 正则表达式: ## 单字符匹配: python # 匹配某个字符串: # text "abc" # ret re.match(b,text) # print(ret.group()) # 点(.):匹配任意的字符(除了\n): # text "\nabc&quo…

day02_mysql-DDLDMLDQL_课后练习 - 参考答案

文章目录 day02_mysql_课后练习第1题第2题 day02_mysql_课后练习 第1题 案例: 1、创建数据库test02_library 2、创建表格books 字段名字段说明数据类型b_id书编号int(11)b_name书名varchar(50)authors作者varchar(100)price价格floatpub…

【C语言】——指针四:字符指针与函数指针变量

【C语言】——指针四:字符指针与函数指针变量 一、字符指针二、函数指针变量2.1、 函数指针变量的创建2.2、两段有趣的代码 三、typedef关键字3.1、typedef的使用3.2、typedef与define比较 四、函数指针数组 一、字符指针 在前面的学习中,我们知道有一种…

FaceBook广告账号验证教程

1.登录facebook账号,点击左边的ads manager。 2.点击Create ad创建广告。 3.选择广告投放意向。 4.填写广告信息。 5.创建广告后选择付款方式,这里我是使用信用卡付款。这里我是使用Fomepay的虚拟卡进行绑定的。 6.填写信用卡的持卡人姓名 卡号 有效期 安全码 7.填写…

【Jenkins】群晖 配置 ssh over push 插件

群晖 配置 ssh over push 插件 前提 部署好 Jenkins 且 安装 好 ssh over push 插件 开启 群晖 ssh 服务 及 SFTP 服务 配置 Jenkins Jenkins ——系统管理——publish over ssh 测试下: 遇到的问题: jenkins.plugins.publish_over.BapPublishe…

数据容器-序列-集合-Python

师从黑马程序员 序列 序列的常用操作-切片 切片:从一个序列中,取出一个子序列 语法:序列[起始下标:结束下标,步长] 注:此操作不会影响序列本身,而是会得到一个新的序列 my_list[0.1,2,3,4,5,6] result1…

LeetCode-热题100:79. 单词搜索

题目描述 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相…

解决长尾问题,BEV-CLIP:自动驾驶中复杂场景的多模态BEV检索方法

解决长尾问题,BEV-CLIP:自动驾驶中复杂场景的多模态BEV检索方法 理想汽车的工作,原文,BEV-CLIP: Multi-modal BEV Retrieval Methodology for Complex Scene in Autonomous Driving 链接:https://arxiv.org/pdf/2401.…

C++函数返回机制,返回类型

return语句终止当前正在执行的函数并将控制权返回到调用该函数的地方。 return语句有两种形式 return;return expression; 无返回值函数 没有返回值的return语句只能用在返回类型是void的函数中。 返回void的函数不要求必须有return语句,因为这类函数的最后一句…

手撕算法-接雨水

描述 分析 i位置能积累的雨水量,等于其左右两边最大高度的最小值。为了能获取i位置左右两边的最大高度。使用动态规划。两个dp数组: leftMaxrightMax 其中 leftMax[i] 代表i位置左边的最大高度rightMax[i] 代表i位置右边的最大高度 初始状态&#x…

新手装修:卫生间渗水原因及解决方法。福州中宅装饰,福州装修

引言 瓷砖渗水问题常常发生在卫生间区域,需要及时处理以免造成地面滑倒和墙面霉菌等问题,为了解决这一问题,我们应该怎么做呢? 首先要检查水管是否漏水,可以进行打压测试来确认是否存在漏水情况。如果发现水管破损造成…

php 快速入门(一)

一、配置系统环境 1.1 安装软件 1、安装php的开发软件:phpstorm 在这个软件中写代码 2、安装php的运行软件:phpstduy 写好的php程序需要放到phpstduy中,用户才能访问和测试 安装过程注意事项:安装的路径中不能有空格和中文字符&…

什么是 PDAF?它是如何工作的?相位检测自动对焦解释

常见问题解答 什么是相位对焦 PDAF 代表相位检测自动对焦。这是一种自动对焦方法,可以检测光线进入相机时的行进和交汇位置。在智能手机中,这是在传感器级别完成的。为了使物体聚焦,光线应该在同一点相遇。如果不这样做,系统将确定如何调整镜头以达到焦点。 PDAF 好用吗…