gdb调试命令大全
基本命令
#gdb test test是要调试的程序,由gcc test.c -g -o test生成。进入后提示符变为(gdb) 。
start : 指令会执行程序至main() 主函数的起始位置,即在main() 函数的第一行语句处停止执行(该行代码尚未执行)
continue : 从断点位置继续运行
r(un) : 指令会一直执行程序,直到执行结束。 如果程序中手动设置有断点,则run 指令会执行程序至第一个断点处。在它后面可以跟随发给该程序的任何参数,包括标准输入和标准输出说明符(<和>)和shell通配符(*、?、[、])在内。
n(ext) : 单步运行,逐过程调试C 代码Style
s(tep) : 单步运行,逐语句调试,C Style
n(ext)i : 单步运行,逐过程调试汇编代码
s(tep)i : 单步运行,逐语句调试汇编代码,si/s 都可以
finish : 如果已经进入了某函数,而想退出该函数返回到它的调用函数中,可使用命令finish
until : 结束当前循环
whatis : 显示变量或函数类型
quit : 退出gdb
file tools/system : 添加sourceMap文件tools/system
directory /Users/Linux/Linux-0.11-on-mac: 指定源码路径"/Users/Linux/Linux-0.11-on-mac "
source a 应用gdb命令脚本 a,可以在脚本中添加一系列断点,避免每次调试都需要设置这些断点。更多参考
断点
info b 查看断点,information break的缩写
break n 在n行处设置断点
tbreak n/ tbreak func 设置临时断点,到达n行或函数func 后被自动删除
break main.c:10 在main.c文件第10行设置断点
break 0x3400a 在内存0x3400a处设置断点
break 10 if i==3 设置条件断点,在循环中使用非常方便
clear 10 清除第10行的断点,清除时GDB会给出提示
delete 3 对第10行 清除断点和自动显示的表达式的命令,清除时GDB不会给出任何提示
disable/enable 3 让所设断点暂时 关闭/开启,如果要让多个编号处的断点失效/使能,可将编号之间用空格隔开
awatch/watch i 设置一个观察点,当变量i 被读出或写入时程序被暂停
rwatch i 设置一个观察点,当变量i 被读出时,程序被暂停
查看源代码
list :简记为 l ,其作用就是列出程序的源代码,默认每次显示10行。
list 12:将显示当前文件以“12行”为中心的前后10行代码,
list main:将显示“main”所在函数的源代码,
查看运行信息
info program :查看程序的是否在运行,进程号,被暂停的原因。
p i 显示变量值i,在程序暂停时,键入"p 变量名"(print)即可,GDB在显示变量值时都会在对应值之前加上"$N"标记,它是当前变量值的引用标记,以后若想再次引用此变量,就可以直接写作"$N",而无需写冗长的变量名;
display 查看变量或表达式的值,例如: display /x i,以16进制显示变量i的值。它与print的区别是,每当程序暂停执行(例如单步执行)时,GDB 调试器都会自动帮我们打印出来,而 print 命令则不会。 参考
watch i 观察变量,在某一循环处,往往希望能够观察一个变量的变化情况,这时就可以键入命令"watch"来观察变量的变化情况,GDB在"n"设置了观察点;
i register 打印寄存器的值,输出不包括浮点寄存器和向量寄存器的内容
i all-registers 输出所有寄存器的内容
i registers eax”或者“p $eax 打印eax寄存器的值, 参考
where/bt :当前运行的堆栈列表
bt /backtrace/info stack :显示当前调用堆栈
bt full :查看完整的调用堆栈信息,包括每个栈帧中所有变量和参数的信息。
up/down :改变堆栈显示的深度
set args :指定运行时的参数
set args [arguments] :传递命令行参数
show args :查看设置好的参数
gdb查看内存数据
格式: x /nfu 例如: x /20xh 0x7fffffffe080
说明:
x 是 examine 的缩写,意思是检查。
n表示要显示的内存单元的个数,比如:20
f表示显示方式, 可取如下值:
x 按十六进制格式显示变量。
d 按十进制格式显示变量。
u 按十进制格式显示无符号整型。
o 按八进制格式显示变量。
t 按二进制格式显示变量。
a 按十六进制格式显示变量。
i 指令地址格式
c 按字符格式显示变量。
f 按浮点数格式显示变量。
u表示一个地址单元的长度:
b表示单字节,
h表示双字节,
w表示四字节,
g表示八字节
layout
(gdb) layout src 显示源代码窗口
(gdb) layout regs 显示寄存器窗口
(gdb) layout asm 显示汇编代码窗口
(gdb) layout split 显示源代码和汇编代码
info win 显示窗口的大小
layout next 切换到下一个布局模式
layout prev 切换到上一个布局模式
focus cmd/src/asm/regs/next/prev 切换当前窗口
refresh 刷新所有窗口
update 更新源代码窗口和当前执行点
相关文章:
gdb调试命令大全
基本命令 #gdb test test是要调试的程序,由gcc test.c -g -o test生成。进入后提示符变为(gdb) 。 start : 指令会执行程序至main() 主函数的起始位置,即在main() 函数的第一行语句处停止执行(该行代码尚未执行) cont…...
ESP32之arduino环境安装及点灯
目录 前言 前两天安装了VScode,奈何资源找的困难,于是咨询淘宝客服,他说arduino用的多,资源多.然后就安装了a…...
查看VUE中安装包依赖的版本号
查看VUE中安装包依赖的版本号 全部依赖包版本查看某个依赖的例:查看stompjs 应用命令npm ls stompjs 全部依赖包版本 使用npm命令 使用 npm ls 命令可以列出项目中所有已安装的依赖包及其版本。 使用 npm list --depth1 命令可以列出项目中直接依赖的包及其版本&a…...
博途通讯笔记1:1200与1200之间S7通讯
目录 一、添加子网连接二、创建PUT GET三、各个参数的意义 一、添加子网连接 二、创建PUT GET 三、各个参数的意义...
Kafka搭建(集群版)
Kafka单机版 部署前提 VMware环境 : 两台centos系统 Jdk包:jdk-8u202-linux-x64.tar.gz Kafka包:kafka_2.12-3.5.0.tgz Zookeeper包:apache-zookeeper-3.7.2-bin.tar.gz 百度网盘自取: 链接: https://pan.baidu.com/s/11EWuhBoSmH3musd_3Rgodw?pwde32t 提取码: e32t Kafka搭建…...
【康复学习--LeetCode每日一题】3115. 质数的最大距离
题目: 给你一个整数数组 nums。 返回两个(不一定不同的)质数在 nums 中 下标 的 最大距离。 示例 1: 输入: nums [4,2,9,5,3] 输出: 3 解释: nums[1]、nums[3] 和 nums[4] 是质数。因此答案是…...
【yolov8系列】ubuntu上yolov8的开启训练的简单记录
前言 yolov8的广泛使用,拉取yolov8源码工程,然后配置环境后直接运行,初步验证自己数据的检测效果,在数据集准备OK的情况下 需要信手拈来,以保证开发过程的高效进行。 本篇博客更注意为了方便自己使用时参考。顺便也记录…...
Scala学习笔记15: 文件和正则表达式
目录 第十五章 文件和正则表达式1- 读取行2- 从URL或者其它源读取3- 写入文本文件4- 序列化5- 正则表达式6- 正则表达式验证输入数据格式end 第十五章 文件和正则表达式 1- 读取行 在Scala中读取文件中的行可以通过不同的方法实现 ; 一种常见的方法是使用 scala.io.Source 对…...
外卖员面试现状
说明: 以下身份角色用符号代替 # 面试官 $ 求职者 # 看了您的简历你有两年半的送外卖经验,可以简单说一下您平时是怎么送外卖的吗? $ 我首先在平台接单然后到店里取餐,取到餐后到顾客留下的地址,再通知顾客取餐 # 你们也用电动…...
异步加载与动态加载
异步加载和动态加载在概念上有相似之处,但并不完全等同。 异步加载(Asynchronous Loading)通常指的是不阻塞后续代码执行或页面渲染的数据或资源加载方式。在Web开发中,异步加载常用于从服务器获取数据,而不需要用户等…...
MUNIK解读ISO26262--什么是DFA
我们在学习功能安全过程中,经常会听到很多安全分析方法,有我们熟知的FMEA(Failure Modes Effects Analysis)和FTA(Fault Tree Analysis)还有功能安全产品设计中几乎绕不开的FMEDA(Failure Modes Effects and Diagnostic Analysis),相比于它们…...
启动spring boot项目停止 提示80端口已经被占用
可能的情况: 检查并结束占用进程: 首先,你需要确定哪个进程正在使用80端口。在Windows上,可以通过命令行输入netstat -ano | findstr LISTENING | findstr :80来查看80端口的PID,然后在任务管理器中结束该进程。在...
SOLIDWORKS分期许可(订阅形式),降低前期的投入成本!
SOLIDWORKS 分期许可使您能够降低前期软件成本,同时提供对 SOLIDWORKS 新版本和升级程序的即时访问,以及在每个期限结束时调整产品的灵活性,帮助您跟上市场需求和竞争压力的步伐。 目 录: ★ 1 什么是SOLIDWORKS分期许可 ★ 2 …...
详细分析Spring Boot 数据源配置的基本知识(附配置)
目录 前言1. 基本知识2. 模版3. 实战经验前言 对于Java的基本知识推荐阅读: java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)【Java项目】实战CRUD的功能整理(持续更新)1. 基本知识 包括数据源的概念、连接池的作用、多数据源的实现与管理、Druid 连接池…...
海思SD3403/SS928V100开发(15)9轴IMU ICM-20948模块SPI接口调试
1.前言 芯片平台: 海思SD3403/SS928V100 操作系统平台: Ubuntu20.04.05【自己移植】 9轴IMU模块:ICM-20948 通讯接口: SPI 模块datasheet手册: https://download.csdn.net/download/jzwjzw19900922/89517096 2. 调试记录 2.1 pinmux配置 #spi0 bspmm 0x0102F01D8 …...
大力出奇迹:大语言模型的崛起与挑战
随着人工智能(AI)技术的迅猛发展,特别是在自然语言处理(NLP)领域,大语言模型(LLM)的出现与应用,彻底改变了我们与机器互动的方式。本文将探讨ChatGPT等大语言模型的定义、…...
【算法 - 哈希表】两数之和
这里写自定义目录标题 两数之和题目解析思路解法一 :暴力枚举 依次遍历解法二 :使用哈希表来做优化 核心逻辑为什么之前的暴力枚举策略不太好用了?所以,这就是 这道题选择 固定一个数,再与其前面的数逐一对比完后&…...
【深度学习】图形模型基础(5):线性回归模型第一部分:认识线性回归模型
1. 回归模型定义 最简单的回归模型是具有单一预测变量的线性模型,其基本形式如下: y a b x ϵ y a bx \epsilon yabxϵ 其中, a a a 和 b b b 被称为模型的系数或更一般地,模型的参数。 ϵ \epsilon ϵ 代表误差项&#…...
2024 年第十四届 APMCM 亚太地区大学生数学建模竞赛B题超详细解题思路+数据预处理问题一代码分享
B题 洪水灾害的数据分析与预测 亚太中文赛事本次报名队伍约3000队,竞赛规模体量大致相当于2024年认证杯,1/3个妈杯,1/10个国赛。赛题难度大致相当于0.6个国赛,0.8个妈杯。该比例仅供大家参考。 本次竞赛赛题难度A:B:C3:1:4&…...
Yarn有哪些功能特点
Yarn是一个由Facebook团队开发,并联合Google、Exponent和Tilde等公司推出的JavaScript包管理工具,旨在提供更优的包管理体验,解决npm(Node Package Manager)的一些痛点。Yarn的功能特点主要包括以下几个方面࿱…...
告别虚拟机卡顿:在VMware里给CentOS 7最小化安装分配多少内存和CPU才够用?
虚拟机性能优化指南:CentOS 7最小化安装的资源分配策略在个人电脑上运行虚拟机时,最令人头疼的问题莫过于性能瓶颈。许多初学者在创建CentOS 7虚拟机时,常常陷入两难境地:分配过多资源会影响宿主机运行,分配过少又会导…...
如何高效使用NHSE:动物森友会存档编辑器的完整专业指南
如何高效使用NHSE:动物森友会存档编辑器的完整专业指南 【免费下载链接】NHSE Animal Crossing: New Horizons save editor 项目地址: https://gitcode.com/gh_mirrors/nh/NHSE 你是否厌倦了在《集合啦!动物森友会》中花费数百小时收集稀有物品&a…...
SMUDebugTool:免费开源的AMD Ryzen硬件调试利器,释放处理器全部潜力
SMUDebugTool:免费开源的AMD Ryzen硬件调试利器,释放处理器全部潜力 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table…...
解锁AMD Ryzen隐藏性能:一款开源调试工具如何让你成为硬件调优高手
解锁AMD Ryzen隐藏性能:一款开源调试工具如何让你成为硬件调优高手 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址…...
IGND算法:融合高斯牛顿法与增量学习的优化新范式
1. IGND算法:当高斯牛顿法遇见增量学习在机器学习的世界里,模型训练的本质就是一场持续的优化之旅。我们手握一个由参数构成的复杂函数,目标是在浩瀚的参数空间中,找到那个能让预测误差最小化的“甜蜜点”。多年来,随机…...
基于KDTree的机器学习壁面函数:提升CFD湍流模拟精度与效率
1. 项目概述在计算流体力学(CFD)的湍流模拟领域,尤其是处理高雷诺数工程流动时,近壁面区域的精确建模一直是个核心挑战。直接对粘性底层进行网格解析(Wall-Resolved LES/DES)虽然精度高,但计算成…...
LeetCode 238:除自身以外数组的乘积 | 前缀积与后缀积
LeetCode 238:除自身以外数组的乘积 | 前缀积与后缀积 引言 除自身以外数组的乘积(Product of Array Except Self)是 LeetCode 第 238 题,难度为 Medium。题目要求在 O(n) 时间内不使用除法计算每个元素除自身以外所有其他元素的乘…...
C#根据时间加密和防止反编译的两种方案
时间加密 用当前时间做密钥 / 校验,防反编译 混淆 加壳,配套用)一、C# 时间加密 2 种核心实现(直接用)都是可直接运行的完整代码,适合做注册验证、临时授权方案 1:时间戳 AES 加密ÿ…...
差分隐私矩阵机制与FFT优化:保护多轮迭代计算的高效方法
1. 差分隐私矩阵分解:从理论到工程实践在联邦学习、推荐系统这些需要频繁进行多轮迭代计算的场景里,我们常常面临一个核心矛盾:既要利用全体参与者的数据来训练一个高质量的全局模型,又要确保任何单个参与者的敏感信息不会在训练过…...
Unity ECS帧同步实战:确定性模拟与Job化网络Tick
1. 这不是“又一个Unity网络教程”,而是帧同步在ECS架构下的真实落地切口很多人一看到“Unity多人对战”就下意识点开,结果发现是PhotonMonoBehaviour的旧路子:对象池、RPC调用、状态同步、插值补偿……代码越写越厚,逻辑越埋越深…...
