讲师中心 微信公众号
AI工具推荐 视频效率加速

GDB怎么查看栈上的内存数据

云婷同学_4810

云婷同学_4810

发布时间:2026-09-08 15:05:25

|

557人浏览过

|

来源于php中文网

原创

x命令是唯一能按地址和字节粒度直接读栈内存的调试工具,不依赖调试信息,适用于无变量名的栈数据;其格式x/nuw中n为单元数、u为单位大小(b/h/w/g)、f为显示格式(x/d/u/s/i)。

gdb怎么查看栈上的内存数据

x 命令直接读栈内存,别用 print

print 只能解析变量名或表达式,它依赖调试信息和类型系统,对裸栈地址无效。而栈上很多数据(比如未命名的临时值、溢出覆盖区、返回地址附近)根本没变量名,必须用 x —— 它是唯一能按地址、按字节粒度读内存的命令。
  • x 不关心符号表,只认地址和格式
  • 栈指针寄存器($rsp$rbp)是你最常用来定位的起点
  • 比如 x/8xw $rsp 表示:从当前栈顶开始,以 4 字节为单位,显示 8 个值,用十六进制

x/nuw $rsp 中的 n、u、w 分别控制什么

这三个参数决定“读多少、怎么读、读多大”:
  • n:要显示的单元数量,不是字节数。例如 x/5xg 是 5 个 8 字节单元,共 40 字节
  • u:单位大小,常用:b(1 字节)、h(2 字节)、w(4 字节)、g(8 字节)
  • f:显示格式,调试栈时最常用:x(十六进制)、d(有符号十进制)、u(无符号十进制)、s(字符串)、i(反汇编指令)

常见组合:

GDB 16.2
GDB 16.2

GDB 16.2 GNU 官方历史源码发布包,适合旧项目兼容、复现调试环境、排查版本差异和在 Unix-like 系统中自行构建。

下载
  • x/16xb $rsp:查看栈顶 16 字节原始内容(排查越界写入)
  • x/8xg $rbp:查看以 $rbp 为基址的 8 个 8 字节值(常用于找调用者返回地址、旧 $rbp
  • x/4su $rsp:把栈顶起 4 个“字符串单元”当 C 字符串打印(注意 s 默认按 char* 解析,遇 \0 截断)

为什么 info locals 看不到变量,但 x 能看到

info locals 依赖编译器生成的 DWARF 调试信息,一旦开启优化(如 -O2),局部变量可能被寄存器化、内联或完全删除——此时它就为空。而 x 绕过所有抽象层,直接读物理内存:
  • 即使变量被优化掉,只要它曾被写入栈(比如未优化前的调试版),其残留值仍在那
  • 如果你怀疑栈被破坏,x/32xb $rspinfo locals 更可信
  • 注意:栈增长方向是向下(高地址 → 低地址),所以 $rsp 是栈顶最低地址,往低地址走才是“向上”看函数参数或返回地址

查栈时最容易忽略的两个细节

- $rsp$rbp 的值在函数入口/出口处变化剧烈,单步到 callret 前后立刻 info registers 对比,否则地址可能已失效 - x 默认按“当前架构字长”解释内存(x86_64 是 8 字节),但如果你读的是 char buf[10],用 x/10cb &buf 才能看到每个字符,用 x/10xb &buf 会把字节顺序搞反(小端序下低位在前)

栈不是黑盒,它是可测量的内存区域。只要地址对、单位对、格式对,x 就不会骗你。

热门AI工具

更多
讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

LibLibAI
LibLibAI Hot

一款AI视频创作工具,主要用于国内领先的AI创意平台,以海量模型、低门槛操作与“创作-分享-商业化”生态,让小白与专业创作者都能高效实现图文乃至视频创意表达,适合需要提升相关任务效率的用户。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

相关专题

更多
堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

4507

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

2068

2023.08.10

Vibeknow在线使用入口合集
Vibeknow在线使用入口合集

本专题汇总了Vibeknow在线创作视频的官方入口及网页版使用教程,涵盖PPT、PDF、Word等文档一键转讲解视频的核心操作,并整理了免费版水印规则与手机端浏览器访问指南,助你快速将知识内容视频化。

20

2026.09.21

NumPy随机数文件读写与dtype数据类型
NumPy随机数文件读写与dtype数据类型

本专题整理 NumPy 随机数、文件读写与 dtype 数据类型相关教程,覆盖 Generator/random、随机数种子、正态分布采样、npy/npz/CSV/TXT 保存读取、loadtxt/savetxt、memmap、大文件处理、astype 类型转换、结构化 dtype、整数溢出和精度丢失等场景。

0

2026.09.21

NumPy矩阵运算与线性代数计算
NumPy矩阵运算与线性代数计算

本专题整理 NumPy 矩阵运算与线性代数计算相关教程,覆盖矩阵乘法、dot 与 @ 运算符、逆矩阵、行列式、特征值与特征向量、SVD、线性方程组、欧氏距离、矩阵分解和大规模矩阵性能优化等内容,帮助读者掌握 np.linalg 与矩阵计算实战。

0

2026.09.21

NumPy广播机制数学运算与统计分析
NumPy广播机制数学运算与统计分析

本专题整理 NumPy 广播机制、数组数学运算与统计分析相关教程,覆盖广播规则、维度对齐、矩阵与数组加减除法、向量化计算、均值方差、分位数、中位数、直方图和 unique 频次统计等场景,帮助读者掌握 ndarray 高效计算与统计处理方法。

0

2026.09.21

NumPy数组创建索引切片与数据选择
NumPy数组创建索引切片与数据选择

本专题整理 NumPy 数组创建、索引、切片与数据选择相关教程,覆盖 np.array、zeros/ones、多维数组形状、基础切片、花式索引、布尔索引、条件筛选、视图与副本等常用场景,帮助读者系统掌握 ndarray 数据构造与高效提取方法。

0

2026.09.21

Aionclaw智能助手介绍
Aionclaw智能助手介绍

本专题汇总了AionClaw(AI龙虾助手)的功能介绍与在线使用入口。AionClaw是杭州趣猿人工智能有限公司推出的桌面级AI智能体,能直接在电脑上读写文件、运行脚本、操作浏览器,自动交付Word、PPT、Excel等成品。

40

2026.09.20

AionClaw AI智能体与电脑自动化任务执行功能使用教程
AionClaw AI智能体与电脑自动化任务执行功能使用教程

AionClaw专题整理AI智能体与电脑自动化相关功能使用教程,涵盖安装部署、AI任务执行、Skills技能、文件处理、浏览器控制、电脑操作、持久记忆、聊天工具连接以及办公、编程和内容创作等功能,帮助用户快速掌握AionClaw的实际使用方法。

0

2026.09.20

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Valgrind用户手册
Valgrind用户手册

共0课时 | 0人学习

Conan 2 高级依赖模型介绍
Conan 2 高级依赖模型介绍

共0课时 | 0人学习

Conan 2 Essentials 免费课程
Conan 2 Essentials 免费课程

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn