GDB调试指南

1. 启动gdb

gdb [program名]	# 比如gdb main
gdb [program名]	core # 用于调试coredump的错误,需加上生成的core文件路径
gdb -p [pid] # 按进程号调试

2. 调试运行中的程序

当正在运行的程序出现故障,比如服务器程序,无法终止,就需要用attach [pid]来调试正在运行的服务器程序。

sudu gdb
# 进入gdb命令行模式
attach [pid]
detach # 退出调试

当然gdb -p [pid]也是一样的

sudo gdb -p [pid]
# 进入gdb命令模式
detach	# 退出调试

3. 运行程序

run指令:简写r,在启动gdb环境之后,用于运行待调试的程序

set args:设置输入的参数

比如我们要启动调试Redis的哨兵服务器时,需要设置配置文件路径:

gdb redis-server
# 进入gdb命令模式
set args  /home/wishmeluck/redis-6.0.5/redis-6.0.5/sentinel.conf --sentinel
r

4. 退出gdb

quit指令:简写q,如果程序正在运行,会有提示,防止误退出

# gdb命令模式
quit

5. 断点

break指令:简写b,加断点

如果我们要在setCommand函数位置加上断点:

# gdb命令模式
# 方式1
break t_string.c:99
# 方式2
break setCommand
# 方式3
break t_string.c:setCommand

break ... if cond:当只想在某个条件满足时才触发断点,使用if

比如我们想在main.cc的第七行打这样的断点:

# gdb命令模式
break main.cc:7 if cnt > 3
print cnt	#显示cnt的值

info b:查看断点信息,info breakpoints,简写info b

disable、enable、delete:临时关闭、启用、彻底删除 断点

# gdb命令模式
info b
disable 1
enable 1
delete 1

6. 执行流程

continue指令:简写c,用于恢复break指令中断的程序,使其继续向下运行

step [count]指令:简写s,执行count个步骤,会进入函数体,缺省count就是默认执行一步

next [count]指令:简写n,逐函数执行,会执行完整个函数

finish指令:简写fin,执行完当前函数剩下的部分,set print finish [on | off]:控制finish的返回结果是否显示,show print finish:输出finish的返回结果是否显示(默认会显示返回结果)

return指令:在函数当前的位置返回,不管执行到什么位置

until指令:简写u,用于直接跳出循环体

# gdb命令模式
u main.cc:7 #执行到这一行

7. 显示

print指令:手动输出

display指令:自动显示,使用的方式和print一样,但是gdb每次在运行新一条语句时都会显示一次display的内容

list指令:显示源码,默认显示10行

whatis指令:显示类型

8. 补充

shell:如果想在gdb环境中执行Linux命令,可以在指令前加上shell即可

比如clear命令:

# gdb命令模式
shell clear

空行:在gdb下,直接回车,相当于重复执行上一条指令

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vite 构建流程大揭秘:快速构建前端项目的秘密武器

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

物奇平台DRC动态范围控制修改方法

物奇平台DRC动态范围控制修改 是否需要申请加入数字音频系统研究开发交流答疑群(课题组)?可加我微信hezkz17, 本群提供音频技术答疑服务,+群赠送语音信号处理降噪算法,蓝牙耳机音频,DSP音频项目核心开发资料, 音频 DRC 是指动态范围控制(Dyna

Android系统app开发

Android系统app开发 系统app阔以使用很多系统源码中隐藏的api 首先先编译出jar包 整编源码后,在这个目录下,这个就是包含系统源码隐藏api的jar包 系统app的标志 拷贝jar文件到app模块下 在编译之前把这个jar添加到classpath路径里面去,这样…

基于python的遥感影像灰色关联矩阵纹理特征计算

遥感影像纹理特征是描述影像中像素间空间关系的统计特征,常用于地物分类、目标识别和变化检测等遥感应用中。常见的纹理特征计算方式包括灰度共生矩阵(GLCM)、灰度差异矩阵(GLDM)、灰度不均匀性矩阵(GLRLM&…

软件架构与系统架构:区别与联系的分析

软件架构与系统架构:区别与联系的分析 在信息技术领域,软件架构和系统架构这两个术语经常被提及。尽管它们在某些方面有重叠,但它们确实代表了不同的概念和聚焦点。理解这两种架构之间的区别和联系对于任何从事技术开发和设计的专业人士都是至…

大模型LLM训练显存消耗详解

参考论文:ZeRO: Memory Optimizations Toward Training Trillion Parameter Models 大模型的显存消耗一直都是面试常见的问题,这次我就彻彻底底的根据论文ZeRO中的调研和分析做一次分析 显存消耗的两个部分:Model States(跟模型的…

spark sql官网优化指南

两句话概括 缓存数据调整参数 缓存数据 把数据缓存到内存,spark sql能够只扫描需要列并且会自动压缩数据,占用最小的内存和减小GC压力。这无需多言,内存远远要快于磁盘,spark效率比hive高这个就是一个主要原因。 缓存数据代码spark.catalog.cacheTable("tableName&qu…

unity C#中的封装、继承和多态简单易懂的经典实例

文章目录 封装 (Encapsulation)继承 (Inheritance)多态 (Polymorphism) C#中的封装、继承和多态是面向对象编程(OOP)的三大核心特性。下面分别对这三个概念进行深入解释,并通过实例来说明它们在实际开发中的应用。 封装 (Encapsulation) 实例…

java项目的构建流程

1.创建项目 2.创建模块 创建时要注意组ID的命名 通常包含以下模块: 项目的pom文件中,依赖如下(web模块不需要依赖,也不需要main文件夹): 3.配置pom文件 1),主pom文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://mav…

【机构vip教程】Android SDK手机测试环境搭建

Android SDK 的安装和环境变量的配置 前置条件&#xff1a;需已安装 jdk1.8及 以上版本 1、下载Android SDK&#xff0c;解压后即可&#xff08;全英文路径&#xff09;&#xff1b;下载地址&#xff1a;http://tools.android-studio.org/index.php/sdk 2、新建一个环境变量&…

力扣题目训练(14)

2024年2月7日力扣题目训练 2024年2月7日力扣题目训练501. 二叉搜索树中的众数504. 七进制数506. 相对名次201. 数字范围按位与209. 长度最小的子数组87. 扰乱字符串 2024年2月7日力扣题目训练 2024年2月7日第十四天编程训练&#xff0c;今天主要是进行一些题训练&#xff0c;包…

3DSC特征描述符、对应关系可视化以及ICP配准

一、3DSC特征描述符可视化 C #include <pcl/point_types.h> #include <pcl/point_cloud.h> #include <pcl/search/kdtree.h> #include <pcl/io/pcd_io.h> #include <pcl/features/normal_3d_omp.h>//使用OMP需要添加的头文件 #include <pcl…

linux下ffmpeg调用GPU硬件解码(VDPAU/VAAPI)保存文件

本文讲解在linux下面&#xff0c;如何通过ffmpeg调用GPU硬件解码&#xff0c;并保存解码完的yuv文件。 其实&#xff0c;ffmpeg自带的例子hw_decode.c这个文件&#xff0c;就已经能满足要求了&#xff0c;因此&#xff0c;本文就尝试讲解以下hw_decode这个例子。hw_decode.c可以…

Java图形化界面编程——五子棋游戏 笔记

2.8.5 五子棋 接下来&#xff0c;我们使用之前学习的绘图技术&#xff0c;做一个五子棋的游戏。 注意&#xff0c;这个代码只实现了五子棋的落子、删除棋子和动画等逻辑实现&#xff0c;并没有把五子棋的游戏逻辑编写完整&#xff0c;比较简单易上手。 图片素材 package…

深度学习与计算机视觉 | 实用CV开源项目汇总(有github代码链接,建议收藏!)

本文来源公众号“深度学习与计算机视觉”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;【建议收藏】实用CV开源项目汇总&#xff08;文末有彩蛋~&#xff09; 01 Trace.moe 图像反向搜索动漫场景&#xff0c;使用动漫截图搜索该…

数据库实验报告

用SQL语句和企业管理器建立如下的表结构并输入数据 给定表结构如下&#xff1a; 创建数据库 创建数据库 create table student(Sno int auto_increment primary key,Sname varchar(45),Ssex varchar(45),Sage int,Sdept varchar(45) )engine InnoDB default charsetutf8; …

java之VO,BO,PO,DO,DTO

概念 VO&#xff08;View Object&#xff09;&#xff1a;视图对象&#xff0c;用于展示层&#xff0c;它的作用是把某个指定页面&#xff08;或组件&#xff09;的所有数据封装起来。DTO&#xff08;Data Transfer Object&#xff09;&#xff1a;数据传输对象&#xff0c;这…

代码随想录刷题笔记-Day19

1. 二叉搜索树的最小绝对差 530. 二叉搜索树的最小绝对差https://leetcode.cn/problems/minimum-absolute-difference-in-bst/ 给你一个二叉搜索树的根节点 root &#xff0c;返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数&#xff0c;其数值等于两值之差的绝…

windows安装Mysql解压版

windows安装Mysql解压版 一、下载mysql-8.0.36-winx64.zip二、解压三、配置3.1. 添加环境变量&#xff1a;新建MYSQL_HOME3.2.如何验证是否添加成功&#xff1a;必须以管理员身份启动3.3. 初始化MySQL&#xff1a;必须以管理员身份启动3.4. 注册MySQL服务&#xff1a;必须以管理…

算法练习-01背包问题【含递推公式推导】(思路+流程图+代码)

难度参考 难度&#xff1a;困难 分类&#xff1a;动态规划 难度与分类由我所参与的培训课程提供&#xff0c;但需 要注意的是&#xff0c;难度与分类仅供参考。且所在课程未提供测试平台&#xff0c;故实现代码主要为自行测试的那种&#xff0c;以下内容均为个人笔记&#xff0…