You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Visual Studio调试器中如何打印内存中的字节范围?

在Visual Studio调试器中提取内存十六进制数据的方法

嘿,你要找的就是Visual Studio调试器里的内存转储命令,和WinDbg的db功能完全对标,能完美解决Debug.Print遇空字符就停的问题。具体用法如下:

核心命令:d系列(和WinDbg的db/dw等一致)

在VS的即时窗口命令窗口(程序暂停调试时),直接用这些命令就能输出完整的十六进制数据:

  • db <内存地址>, <字节长度>:按字节输出十六进制值+对应ASCII字符,即使碰到空字符也会继续输出到指定长度
    举个例子:要从地址0x0012FF40提取32字节的数据,输入:
    db 0x0012FF40, 32
    
  • dw <内存地址>, <双字节数>:以16位为单位输出十六进制数据
  • dd <内存地址>, <四字节数>:以32位为单位输出十六进制数据

你也可以直接用变量的地址来指定起始位置,比如你的结构体变量叫myStruct,要提取它的全部内容(假设大小是64字节),就输入:

db &myStruct, 64

备选:DumpMemory命令

如果觉得d系列太简洁记不住,还有更直白的DumpMemory命令,语法是指定起始和结束地址:

DumpMemory <起始地址>, <结束地址>

比如同样提取32字节,结束地址就是起始地址加32(十六进制是0x20),输入:

DumpMemory 0x0012FF40, 0x0012FF60

输出效果和db命令一致,不会被空字符截断。

这些命令都是VS调试器原生支持的,不用额外设置,直接在调试暂停时用就行,完全能满足你提取固定长度数据结构并以十六进制对呈现的需求。

内容的提问来源于stack exchange,提问作者Alex Schuldberg

火山引擎 最新活动