当前位置: 首页 > news >正文

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是要调试的程序&#xff0c;由gcc test.c -g -o test生成。进入后提示符变为(gdb) 。 start &#xff1a; 指令会执行程序至main() 主函数的起始位置&#xff0c;即在main() 函数的第一行语句处停止执行&#xff08;该行代码尚未执行&#xff09; cont…...

ESP32之arduino环境安装及点灯

目录 前言 前两天安装了VS&#xff43;&#xff4f;&#xff44;&#xff45;&#xff0c;奈何资源找的困难&#xff0c;于是咨询淘宝客服&#xff0c;他说&#xff41;&#xff52;&#xff44;&#xff55;&#xff49;&#xff4e;&#xff4f;用的多,资源多.然后就安装了a…...

查看VUE中安装包依赖的版本号

查看VUE中安装包依赖的版本号 全部依赖包版本查看某个依赖的例&#xff1a;查看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. 质数的最大距离

题目&#xff1a; 给你一个整数数组 nums。 返回两个&#xff08;不一定不同的&#xff09;质数在 nums 中 下标 的 最大距离。 示例 1&#xff1a; 输入&#xff1a; nums [4,2,9,5,3] 输出&#xff1a; 3 解释&#xff1a; nums[1]、nums[3] 和 nums[4] 是质数。因此答案是…...

【yolov8系列】ubuntu上yolov8的开启训练的简单记录

前言 yolov8的广泛使用&#xff0c;拉取yolov8源码工程&#xff0c;然后配置环境后直接运行&#xff0c;初步验证自己数据的检测效果&#xff0c;在数据集准备OK的情况下 需要信手拈来&#xff0c;以保证开发过程的高效进行。 本篇博客更注意为了方便自己使用时参考。顺便也记录…...

Scala学习笔记15: 文件和正则表达式

目录 第十五章 文件和正则表达式1- 读取行2- 从URL或者其它源读取3- 写入文本文件4- 序列化5- 正则表达式6- 正则表达式验证输入数据格式end 第十五章 文件和正则表达式 1- 读取行 在Scala中读取文件中的行可以通过不同的方法实现 ; 一种常见的方法是使用 scala.io.Source 对…...

外卖员面试现状

说明&#xff1a; 以下身份角色用符号代替 # 面试官 $ 求职者 # 看了您的简历你有两年半的送外卖经验&#xff0c;可以简单说一下您平时是怎么送外卖的吗? $ 我首先在平台接单然后到店里取餐&#xff0c;取到餐后到顾客留下的地址&#xff0c;再通知顾客取餐 # 你们也用电动…...

异步加载与动态加载

异步加载和动态加载在概念上有相似之处&#xff0c;但并不完全等同。 异步加载&#xff08;Asynchronous Loading&#xff09;通常指的是不阻塞后续代码执行或页面渲染的数据或资源加载方式。在Web开发中&#xff0c;异步加载常用于从服务器获取数据&#xff0c;而不需要用户等…...

MUNIK解读ISO26262--什么是DFA

我们在学习功能安全过程中&#xff0c;经常会听到很多安全分析方法&#xff0c;有我们熟知的FMEA(Failure Modes Effects Analysis)和FTA(Fault Tree Analysis)还有功能安全产品设计中几乎绕不开的FMEDA(Failure Modes Effects and Diagnostic Analysis)&#xff0c;相比于它们…...

启动spring boot项目停止 提示80端口已经被占用

可能的情况: 检查并结束占用进程: 首先,你需要确定哪个进程正在使用80端口。在Windows上,可以通过命令行输入netstat -ano | findstr LISTENING | findstr :80来查看80端口的PID,然后在任务管理器中结束该进程。在...

SOLIDWORKS分期许可(订阅形式),降低前期的投入成本!

SOLIDWORKS 分期许可使您能够降低前期软件成本&#xff0c;同时提供对 SOLIDWORKS 新版本和升级程序的即时访问&#xff0c;以及在每个期限结束时调整产品的灵活性&#xff0c;帮助您跟上市场需求和竞争压力的步伐。 目 录&#xff1a; ★ 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 …...

大力出奇迹:大语言模型的崛起与挑战

随着人工智能&#xff08;AI&#xff09;技术的迅猛发展&#xff0c;特别是在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;大语言模型&#xff08;LLM&#xff09;的出现与应用&#xff0c;彻底改变了我们与机器互动的方式。本文将探讨ChatGPT等大语言模型的定义、…...

【算法 - 哈希表】两数之和

这里写自定义目录标题 两数之和题目解析思路解法一 &#xff1a;暴力枚举 依次遍历解法二 &#xff1a;使用哈希表来做优化 核心逻辑为什么之前的暴力枚举策略不太好用了&#xff1f;所以&#xff0c;这就是 这道题选择 固定一个数&#xff0c;再与其前面的数逐一对比完后&…...

【深度学习】图形模型基础(5):线性回归模型第一部分:认识线性回归模型

1. 回归模型定义 最简单的回归模型是具有单一预测变量的线性模型&#xff0c;其基本形式如下&#xff1a; y a b x ϵ y a bx \epsilon yabxϵ 其中&#xff0c; a a a 和 b b b 被称为模型的系数或更一般地&#xff0c;模型的参数。 ϵ \epsilon ϵ 代表误差项&#…...

2024 年第十四届 APMCM 亚太地区大学生数学建模竞赛B题超详细解题思路+数据预处理问题一代码分享

B题 洪水灾害的数据分析与预测 亚太中文赛事本次报名队伍约3000队&#xff0c;竞赛规模体量大致相当于2024年认证杯&#xff0c;1/3个妈杯&#xff0c;1/10个国赛。赛题难度大致相当于0.6个国赛&#xff0c;0.8个妈杯。该比例仅供大家参考。 本次竞赛赛题难度A:B:C3:1:4&…...

Yarn有哪些功能特点

Yarn是一个由Facebook团队开发&#xff0c;并联合Google、Exponent和Tilde等公司推出的JavaScript包管理工具&#xff0c;旨在提供更优的包管理体验&#xff0c;解决npm&#xff08;Node Package Manager&#xff09;的一些痛点。Yarn的功能特点主要包括以下几个方面&#xff1…...

lychee-rerank-mm快速上手:3步完成图库重排序(输入描述→上传图片→点击排序)

lychee-rerank-mm快速上手&#xff1a;3步完成图库重排序&#xff08;输入描述→上传图片→点击排序&#xff09; 1. 项目简介 lychee-rerank-mm是一个专门为RTX 4090显卡优化的智能图片排序工具。它能帮你从一堆图片中快速找出与文字描述最匹配的那些图片&#xff0c;就像有…...

March7thAssistant智能自动化:星穹铁道游戏效率工具全解析

March7thAssistant智能自动化&#xff1a;星穹铁道游戏效率工具全解析 【免费下载链接】March7thAssistant &#x1f389; 崩坏&#xff1a;星穹铁道全自动 Honkai Star Rail &#x1f389; 项目地址: https://gitcode.com/gh_mirrors/ma/March7thAssistant 在《崩坏&am…...

Qwen3-0.6B快速调用:LangChain助力,轻松玩转大模型

Qwen3-0.6B快速调用&#xff1a;LangChain助力&#xff0c;轻松玩转大模型 1. 快速了解Qwen3-0.6B Qwen3-0.6B是阿里巴巴开源的通义千问系列最新一代语言模型&#xff0c;拥有6亿参数规模。相比前代模型&#xff0c;它在推理能力、指令遵循和多语言支持方面都有显著提升。这个…...

IDEA插件Apipost-Helper:一站式接口测试与文档生成利器

1. 为什么开发者需要Apipost-Helper插件&#xff1f; 每次写完接口代码都要切换到Postman测试&#xff1f;文档和代码分开维护导致接口更新不同步&#xff1f;作为经历过这些痛点的老开发&#xff0c;我发现Apipost-Helper插件简直是IDEA里的瑞士军刀。它直接把接口调试、文档生…...

NeMo Voice Agent:企业级语音助手框架的技术架构与性能分析

NeMo Voice Agent&#xff1a;企业级语音助手框架的技术架构与性能分析 【免费下载链接】NeMo NVIDIA/NeMo: 是一个用于实现语音和自然语言处理的开源框架。适合在需要进行语音和自然语言处理的任务中使用。特点是提供了一种简单、易用的 API&#xff0c;支持多种语音和自然语言…...

Auto-Photoshop-StableDiffusion-Plugin中文适配终极指南:让AI绘画更懂中文用户

Auto-Photoshop-StableDiffusion-Plugin中文适配终极指南&#xff1a;让AI绘画更懂中文用户 【免费下载链接】Auto-Photoshop-StableDiffusion-Plugin A user-friendly plug-in that makes it easy to generate stable diffusion images inside Photoshop using either Automat…...

Linux文件系统驱动实战:exfat-nofuse跨平台存储解决方案全解析

Linux文件系统驱动实战&#xff1a;exfat-nofuse跨平台存储解决方案全解析 【免费下载链接】exfat-nofuse Android ARM Linux non-fuse read/write kernel driver for exFat and VFat Android file systems 项目地址: https://gitcode.com/gh_mirrors/ex/exfat-nofuse 开…...

LivePortrait:突破性AI肖像动画技术,让静态照片瞬间“活“起来

LivePortrait&#xff1a;突破性AI肖像动画技术&#xff0c;让静态照片瞬间"活"起来 【免费下载链接】LivePortrait Bring portraits to life! 项目地址: https://gitcode.com/GitHub_Trending/li/LivePortrait 在数字内容创作日益普及的今天&#xff0c;如何…...

STC8H上跑smallRTOS51:从源码下载到多任务调度的完整实战(附避坑指南)

STC8H实战smallRTOS51&#xff1a;从零构建多任务系统的全流程解析 作为一名长期使用STM32的嵌入式开发者&#xff0c;第一次接触STC8H时&#xff0c;裸机编程的局限性让我倍感束缚。当项目复杂度上升&#xff0c;多任务管理成为刚需&#xff0c;我决定在STC8H上移植smallRTOS5…...

常量和常量表达式1

一、基础定义&#xff08;C/C通用核心定义&#xff09; 1. 常量&#xff08;Constant&#xff09; 程序整个生命周期内值不可修改、固定不变的量&#xff0c;是值的实体&#xff08;单个固定值/命名固定值&#xff09;&#xff0c;其值的确定时机可在编译期/预处理期&#xff0…...