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

In the Visual Studio debugger, how do I print a range of bytes from memory?

本文关键字:打印 内存 字节 范围 Studio Visual 调试器      更新时间:2023-10-16

我需要从我正在调试的应用程序的内存中提取一个数据结构,该结构是特定数量的字节宽,最好是一系列十六进制对的形式。我想从Visual Studio Debugger中的命令或即时窗口获取此数据。我可以通过db命令在windbg中实现这一点,但是我找不到Visual Studio的特定命令。Debug.Print 是不够的,因为它在遇到空字符时立即停止打印。

我知道这样的命令存在,因为我以前用过它,但我一辈子都找不到它。这就是我不写下来得到的。

在挖掘了一些文档后,我能够找到答案。我想要的命令是Debug.ListMemory,它与d命令别名。以十六进制对打印字节的命令是db/Count:[要打印的字节数] [内存地址]。

>db /Count:1686 0x0000021f7102d4d0
0x0000021F7102D4D0  48 72 2f 50 73 36 68 75 4e 6c 59 44 44 56 33 33  
0x0000021F7102D4E0  38 78 37 4f 55 65 6c 62 6c 6f 51 78 77 66 4e 68  
0x0000021F7102D4F0  35 73 4e 35 42 68 4d 67 54 7a 6e 35 6d 36 52 41
...  

假设p是指向字节数组的指针,您可以输入如下:

(p + start_pos),[items_count]