gdb 调试常用命令

news2024/12/25 9:00:16

运行命令

run简写r 运行程序,当遇到断点后,程序会在断点处停止运行
continue简写c 运行到下一个断点
next简写n 执行下一步语句,不进入函数
step简写s 执行下一步语句
until运行到循环体结束
until 行数运行到某一行
call 函数(参数)调用函数
finish运行程序,直到当前函数完成返回,并打印函数返回时的堆栈地址和返回值及参数值等信息。

断点设定(b / break)

断点
info b查看所有断点
b n打断点在n行
b filename:n断点在某个文件的n行
b n if a > b条件断点设置
b func函数断点设置
b filename:fun某个文件中的某个函数断点
delete 断点号n删除断点
enable 断点号n使能断点n
disable 断点好n暂停断点n
clear 行号n清除第n行断点
delete breakpoints清除所有断点

显示源码

list简记为 l ,其作用就是列出程序的源代码,默认每次显示10行。
list 行号将显示当前文件以“行号”为中心的前后10行代码
list 函数将显示“函数名”所在函数的源代码
list不带参数,将接着上一次 list 命令的,输出下边的内容。

打印表达式(p/print)

p 变量名打印变量名
p 表达式打印表达式结果
p fun(2)将以整数2作为fun函数的参数
p fun(变量名)将变量作为fun函数的参数
p $寄存器名输出当前寄存器地址和值
display 表达式在单步调试后都显示表达式的值
watch 表达式设置一个监视点,一旦被监视的“表达式”的值改变,gdb将强行终止正在被调试的程序
whatis 变量/函数查看变量或函数的类型
info funciton 函数名查看函数
info funcitons查看所有函数
info locals查看当前函数所有的堆栈页的所有变量

查看运行信息

bt/where当前运行的堆栈列表
bt backtrace显示当前调用堆栈
up/down改变堆栈显示的深度
show args查看设置好的参数
info program来查看程序的是否在运行,进程号,被暂停的原因。
set args 参数指定运行时的参数

分割窗口

layout src显示源代码窗口
layout asm显示饭反汇编窗口
layout regs显示源代码/反汇编和CPU寄存器窗口
layout split显示源代码和反汇编窗口

info

i register打印寄存器的值(不包括浮点型)
i all-registers打印所有寄存器的值
i registers 寄存器名/ p $eax输出当前寄存器的值
set var $pc=0x08050949设置pc寄存器的值为0x08050949
info line 行号打印出当前行号的其实地址
disassemble main打印main函数的汇编代码

查看内存中的值

x/ <n/f/u> <addr>

n显示长度,从当前地址向后显示几个地址(units)的值。
f显示的格式(format)。默认使用十六进制格式。
u表示(the unit size) 从当前地址往后每一个值的位宽大小。如果不指定的话,GDB默认是4个bytes。当我们指定了位宽长度后,GDB会从指内存定的内存地址开始,读写指定位宽大小

显示格式(format)

x(hexadecimal)按十六进制格式显示变量。
d(signed decimal)按十进制格式显示变量。
u(unsigned decimal)按十进制格式显示无符号整型。
o(octal)按八进制格式显示变量。
t(binary)按二进制格式显示变量。
a(address)按十六进制格式显示地址,并显示距离前继符号的偏移量(offset)。常用于定位未知地址(变量)。
c(character)按字符格式显示变量。
f(floating)按浮点数格式显示变量。

位宽大小(the unit size)

b表示单字节
h表示双字节
w表示四字 节
g表示八字节

在这里插入图片描述

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

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

相关文章

Windows10安装配置nodejs环境

一、下载 下载地址&#xff1a;https://nodejs.cn/download/ ​ 二、安装 1、找到node-v16.17.0-x64.msi安装包, 根据默认提示安装, 过程中间的弹窗不勾选 2、安装完成后, 打开powershell(管理员身份) ​ 3、命令行输入 node -v 和 npm -v 如下图所示则nodejs安装成功 ​ 三…

人大金仓参与编写《通信行业信息技术应用创新发展白皮书(2024年)》正式发布...

近日&#xff0c;由中国信息通信研究院技术与标准研究所主办的通信行业信创发展分论坛在京成功举办&#xff0c;人大金仓受邀分享行业信创实践经验及成果。论坛上正式发布了人大金仓参与编写的《通信行业信息技术应用创新发展白皮书&#xff08;2024年&#xff09;》。 本次论坛…

pycharm创建的项目

pycharm生成django templates删出 settings.py

解锁ApplicationContext vs BeanFactory: 谁更具选择性?

目录 一、聚焦源码回顾 &#xff08;一&#xff09;源码分析和理解 &#xff08;二&#xff09;简短的回顾对比建议 二、ApplicationContext vs BeanFactory特性对比 &#xff08;一&#xff09;主要特性总结 &#xff08;二&#xff09;直接建议 三、案例简单说明 &am…

21.组件组成

组件组成 组件最大的优势就是可复用性 当使用构建步骤时&#xff0c;我们一般会将 Vue 组件定义在一个单独的 .vue 文件中&#xff0c;这被叫做单文件组件(简称 SFC) 组件组成结构 <template><div>承载标签</div> </template> <script> expor…

矽塔SA8321 单通道 2.7-12.0V 持续电流 3.0A H 桥驱动芯片

描述 SA8321是为消费类产品&#xff0c;玩具和其他低压或者电池供电的运动控制类应用提供了一个集成的电机驱动器解决方案。此器件能够驱动一个直流无刷电机&#xff0c;由一个内部电荷泵生成所需的栅极驱动电压电路和4个功率 NMOS组成H桥驱动&#xff0c;集成了电机正转/反…

【ThinkPHP框架教程·Part-01】ThinkPHP6.x框架安装教程

文章目录 一、框架介绍1、框架简介和版本选择2、主要新特性 二、安装步骤1、下载并运行Composer-Setup.exe2、安装TP前切换镜像3、安装稳定版4、测试运行 一、框架介绍 1、框架简介和版本选择 Thinkphp是一种基于php的开源web应用程序开发框架ThinkPHP框架&#xff0c;是免费开…

封装个js分页插件

// 分页插件类 class PaginationPlugin {constructor(fetchDataURL, options {}) {this.fetchDataURL fetchDataURL;this.options {containerId: options.containerId || paginationContainer,dataSizeAttr: options.dataSizeAttr || toatalsize, // 修改为实际API返回的数据…

easyx库的学习(文字绘制)

前言 昨天刚刚写完了基本图形的制作&#xff0c;今天直接可以来看看&#xff0c;在easyx中使用文字 直接看代码吧 文字绘制 void drawTest() {printf("hello,EasyX");//指的是在控制台打印//设置字体大小&#xff0c;样式settextstyle(30, 0, "微软雅黑&quo…

二维码门楼牌管理应用平台建设:核实与审核的关键作用

文章目录 前言一、二维码门楼牌管理应用平台的建设背景二、核实与审核在二维码门楼牌管理中的应用三、核实与审核的重要性四、优化建议 前言 随着信息技术的快速发展&#xff0c;二维码门楼牌管理应用平台在社区管理中发挥着越来越重要的作用。本文将深入探讨该平台建设过程中…

数据结构––kmp算法(串)

kmp算法作为串的一个重要内容&#xff0c;必然有一定的难度&#xff0c;而在看到各类教辅书里的概念与解释后&#xff0c;其晦涩难懂的内容直接劝退一部分人&#xff0c;现在&#xff0c;让我们来看看吧 KMP解决的问题类型 KMP算法的作用就是在一个已知的字符串中查找子串的位…

一次Redis访问超时的“捉虫”之旅

01 引言 作为后端开发人员&#xff0c;对Redis肯定不陌生&#xff0c;它是一款基于内存的数据库&#xff0c;读写速度非常快。在爱奇艺海外后端的项目中&#xff0c;我们也广泛使用Redis&#xff0c;主要用于缓存、消息队列和分布式锁等场景。最近在对一个老项目使用的docker镜…

HTML、CSS常用的vscode插件 +Css reset 和Normalize.css

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; 文章目录 ✍HTML、CSS常用的vscode插件&#x1f34e;1 HTML 标签同步重命名 – Auto Re…

ardunio中自定义的库文件

1、Arduino的扩展库都是放在 libraries目录下的。完整路径为&#xff1a;C:\Users\41861\AppData\Local\Arduino15\libraries 所以我们需要在这个目录下创建一个文件夹&#xff0c;比如上面的例子是esp32上led灯控制程序&#xff0c;于是我创建了 m_led文件夹&#xff08;前面加…

音视频封装格式解析(1)——H264格式简析,I/P/B帧是什么?H264压缩原理

文章目录 1. H264编码参数2. H264编码原理2.1 压缩原理2.2 编码结构解析 3. NALU结构4. H264 annexb模式5. 补充说明5.1 I帧5.2 P帧5.3 B帧 1. H264编码参数 视频质量和⽹络带宽占⽤是相⽭盾的。通常情况下&#xff0c;视频流占⽤的带宽越⾼则视频质量也越⾼&#xff0c;需要的…

zig v0.12.0 发布 — x-cmd 提供 zig 快捷安装方法和 x zig 模块

文章目录 简介功能特点v0.12.0 新特性[重新设计 Autodoc 的工作原理](https://ziglang.org/download/0.12.0/release-notes.html#Redesign-How-Autodoc-Works)语法变更各类标准库变更构建系统变更 常见用法**使用案例**:竞品和相关项目进一步阅读 简介 Zig 是一种通用编程语言…

OpenCV基本图像处理操作(九)——特征匹配

Brute-Force蛮力匹配 Brute-Force蛮力匹配是一种简单直接的模式识别方法&#xff0c;经常用于计算机视觉和数字图像处理领域中的特征匹配。该方法通过逐一比较目标图像中的所有特征点与源图像中的特征点来寻找最佳匹配。这种方法的主要步骤包括&#xff1a; 特征提取&#xff…

VOC2012数据集免费获取

你是否遇到过如下情况&#xff1a; 使用官方网站下载数据集&#xff0c;emmm这效率 我放到网盘中了&#xff0c;有需要的自取 https://pan.quark.cn/s/f8b457086b6c

1.为什么选择Vue框架

参考&#xff1a;百战程序员 为什么选择Vue框架 Vue是什么&#xff1f; 渐进式 JavaScript 框架&#xff0c;易学易用&#xff0c;性能出色&#xff0c;适用场景丰富的 Web 前端框架 为什么要学习Vue Vue是目前前端最火的框架之一Vue是目前企业技术栈中要求的知识点Vue可以…

开源贡献代码之​探索一下CPython

探索一下Cython 本篇文章将会围绕最近给Apache提的一个feature为背景&#xff0c;展开讲讲CPython遇到的问题&#xff0c;以及尝试自己从0写一个库出来&#xff0c;代码也已经放星球了&#xff0c;感兴趣的同学可以去下载学习。 0.背景 最近在给apache arrow提的一个feature因为…