记录 | gdb调试的基本命令

news2024/11/23 21:11:45

r (run)

运行程序

b (breakpoint)

打断点,比如 b func(打到函数)

b 5(打到第5行)(当前文件)

b main.cpp:5(main.cpp的第5行)

b MyClass::func() (打到类的成员函数func()、在类内可以 p this 打印、p *this、p this->name)

tb (temporary breakpoint)

临时断点,用法同 b

c (continue)

继续执行代码,直到下一个断点

n (next)

执行下一行代码,但是不会进入函数内部

s (step)

执行下一行代码,并进入函数内部 (单步调试)

如果陷入步进后,可以按c跳出继续执行代码

p (print)

打印变量的值

bt (backtrace)

打印函数调用栈

f (finish)

执行到当前函数返回为止

d (delete)

删除断点,d <breakpoint number> 删除指定断点

d 删除所有断点

cl (clear)

同delete,也是删除断点,cl <breakpoint number> 删除指定断点

cl 删除所有断点

watch

监视一个变量或者一段内存

比如监视 n => watch n

条件监视 => watch n if n >= 2

awatch

监视写

rwatch

监视读

g 或 k

退出调试器

tui enable

吊炸天的图形界面调试

layout src

同为吊炸天的图形界面调试

layout asm

显示为汇编语言

u (until)

快速运行完当前的循环体,并运行至循环体外停止

i b

查看断点信息,相当于 info breakpoints

一些小技巧


  • gdb的带参调试:先正常进入gdb调试模式:gdb build/main,然后 run 的时候带参进入,如 r -l -a -o a.txt 等。

这样第二次 run 的时候会带同样的参数


  • 启动 gdb 调试的时候,使用命令 gdb "build main" -ex 'b main',这样启动后会自动跳转到main函数

  • 同理,也可以通过刚才的 -ex 命令指定多个命令

调试配置的保存
  • 进入gdb调试模式后,比如设置了一些断点后,想要把这些配置保存下来 (这里主要指断点的设置),则

save breakpoints codingai.gdb,然后下次再进入调试时加载 source codingai.gdb,这样就重新把调试配置加载进来了


要在两个不同的终端调试

先启一个 main,然后到另一个终端

查找进程pid

ps -A | grep main

# 或

pidof main
# 比如 312312

则继续,在另一个终端中

sudo gdb

# 加载符号
attach 312312

接下来可以正常调试,且两个终端之间是不影响的

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

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

相关文章

算法基础之欧拉函数

欧拉函数 核心思想&#xff1a;欧拉函数: 证明 &#xff1a;容斥原理 #include<iostream>#include<algorithm>using namespace std;const int N 110;int main(){int n;cin>>n;while(n--){int a;cin>>a;int res a;for(int i 2;i < a/i; i){if(a %…

使用TikTok云手机轻松拓展全球市场

TikTok作为一款风靡全球的短视频应用&#xff0c;全球影响力不断扩大。越来越多的商家开始借助TikTok分享作品、在海外市场上获取商业机会。要想更好地借助TikTok扩大海外市场&#xff0c;使用TikTok云手机是一个好选择。本文将介绍TikTok云手机的几大作用&#xff0c;以助您更…

解决ESP8266无法退出透传问题以及获取网络时间以及天气方法

网上很多配置ESP8266的教程&#xff0c;但是遇到无法退出透传模式的情况却没有找得到答案&#xff0c;不知道是大家都没遇到还是怎么样&#xff0c;以下是我的解决方法&#xff1a;实测有效 先发送“”&#xff08;三个加号&#xff09;&#xff08;如果是在串口调试助手调试&…

保存Google Colab数据文件或目录到Google Drive云盘

一、背景 在Google Colab上使用T4 GPU完成微调训练的模型&#xff0c;保存了模型和训练状态的文件存放在Google Colab /content目录内&#xff0c;需要备份。考虑到下载到本地需要大量的流量&#xff0c;且下次继续训练还会上传&#xff0c;最后确定直接保存到Google Drive&am…

linux 上安装 minio

第一步&#xff0c;下载 wget https://dl.minio.org.cn/server/minio/release/linux-amd64/minio 第二步&#xff0c;修改权限 chmod x minio 第三步&#xff0c;设置 Path mv minio /usr/local/bin/ 第四步&#xff0c;创建 minio mkdir minio 第五步&#xff0c;启动 …

C#中var、object和dynamic的区别

在C#编程语言中&#xff0c;我们经常会遇到var、object和dynamic这三个关键字。它们都用于声明变量&#xff0c;但在使用方法和特性上存在一些重要的区别。本文将详细介绍这三者的差异。 目录 var关键字object关键字dynamic关键字总结 var关键字 var是C#语言中的隐式类型推断…

JDBC学习,从入门到入土

JDBC引入 JDBC概念&#xff1a; JDBC是使用Java语言操作关系型数据库的一套API。全称&#xff1a;&#xff08;Java DataBase Connectivity&#xff09;Java数据库连接 JDBC的本质&#xff1a; 官方定义的一套操作所有关系型数据库的规则&#xff0c;即接口。 各个数据库厂…

Windows操作系统重装【老毛桃、软碟通、硬盘装机以及装机原理介绍】

目录 一、老毛桃装机 1.1 老毛桃介绍 1.2 注意事项 1.3 操作步骤 1.3.1 老毛桃U盘制作 1.3.2 老毛桃u盘启动 1.3.3 老毛桃u盘重装系统 二、软碟通装机 2.1 软碟通介绍 2.2 主要特点及功能 2.3 操作步骤 2.3.1 用软碟通制作U盘安装盘 2.3.2 U盘启动 2.3.3 安装系统…

构建陪诊预约系统:技术实现与用户体验

在医疗服务不断创新的背景下&#xff0c;陪诊预约系统作为一种结合技术与人性化服务的应用&#xff0c;为患者提供了更为便捷和贴心的医疗体验。让我们通过简单的示例代码&#xff0c;了解一下如何构建一个基本的陪诊预约系统。 技术栈选择 在开始构建陪诊预约系统之前&…

【数据结构和算法】子数组最大平均数 I

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 滑动窗口含义 2.2 滑动窗口一般解法 2.3 方法一&#xff1a;滑动窗口 三、代码 3.1 方法一&#…

qt-C++笔记之app.processEvents()和QApplication::processEvents()的区别

qt-C笔记之app.processEvents()和QApplication::processEvents()的区别 code review! 代码1&#xff1a; QApplication app(argc, argv); app.processEvents(); 代码2: QApplication::processEvents(); 区别 代码1和代码2的区别在于代码1中使用了一个具体的QApplication对…

26--字符流与字节流

1、IO流概述 1.1 什么是IO流 Java中I/O操作主要是指使用java.io包下的内容&#xff0c;进行输入、输出操作。输入也叫做读取数据&#xff0c;输出也叫做作写出数据。我们把这种数据的传输&#xff0c;可以看做是一种数据的流动&#xff0c;按照流动的方向&#xff0c;以内存为…

力扣刷题记录(17)LeetCode:416、1049

416. 分割等和子集 可以将该问题看成是一个背包问题。背包的容量就是nums数组和的一半。我们如果能够将背包装满就意味着可以将数组分割成两个元素和相等的子集。 1.确定dp[i]的含义 索引i表示背包的容量&#xff0c;dp[i]表示当前容量能够装载的最大值 2.确定动态转移方程 …

JS - 设计模式持续学习中

通过例子持续学习JS设计模式中&#xff0c;接下来请跟随我的步伐走进我的学习笔记世界~ 什么是设计模式&#xff1f;我们为什么需要学习设计模式&#xff1f; 设计模式是可以更好解决问题的一种方案。 这意味着什么&#xff1f;如果你开发的项目的功能是固定的&#xff0c;永…

算法通关村第十四关—堆结构(青铜)

堆结构 一、堆的概念和特征 堆是将一组数据按照完全二叉树的存储顺序&#xff0c;将数据存储在一个一维数组中的结构。堆有两种结构&#xff0c;一种称为大顶堆&#xff0c;一种称为小顶堆&#xff0c;如下图。 1.小顶堆&#xff1a;任意节点的值均小于等于它的左右孩子&#…

android 新版studio gradle 里面没有offline 勾选项

studio 右边 gradle 上面有个图标可以点击切换

宏基因组学中基于Kraken2、Blast、ViPhOG和VirSorter等工具分析病毒组的详细流程,包括数据预处理、病毒序列检测、分类和功能注释等步骤

宏基因组学中分析病毒组的详细流程&#xff0c;包括数据预处理、病毒序列检测、分类和功能注释等步骤。 示例代码使用了常用的生物信息学工具&#xff0c;如Kraken2、Blast、ViPhOG和VirSorter等。 1. 数据预处理 质量控制&#xff1a; 使用FastQC进行原始测序数据的质量检查…

机器视觉:AI赋能缺陷检测,铸就芯片产品的大算力与高能效

导言&#xff1a;近年来&#xff0c;国内芯片行业快速发展&#xff0c;市场对芯片需求的不断增大&#xff0c;芯片的缺陷检测压力也越来越大。芯片产品在生产制造过程中&#xff0c;需要经历数道工序&#xff0c;每个生产环节的材料、环境、工艺参数等都有可能造成产品缺陷。不…

低代码:万事俱备,就差一个程序员

前言 低代码技术&#xff0c;作为当前软件开发领域的一颗新星&#xff0c;正在逐渐改变着传统编程的面貌。其核心特点鲜明且富有创新性&#xff0c;如通过直观的拖拽组件来进行软件开发&#xff0c;这种方式极大地降低了编程的复杂性。可视化编程则是将复杂的代码逻辑转化为图…

js 图片 手动上传,并回显

效果展示&#xff1a; 代码&#xff1a; <label for"avatarUpload"><div><img v-if"avatatImageUrl" :src"avatatImageUrl" class"avatar"><img v-else src"../../assets/images/account/avatar-upload.png…