Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在VisualStudio调试器中,如何从内存打印一系列字节?_C++_Visual Studio_Debugging - Fatal编程技术网

C++ 在VisualStudio调试器中,如何从内存打印一系列字节?

C++ 在VisualStudio调试器中,如何从内存打印一系列字节?,c++,visual-studio,debugging,C++,Visual Studio,Debugging,我需要从我正在调试的应用程序的内存中提取一个特定字节宽的数据结构,最好是以一系列十六进制对的形式。我想从VisualStudio调试器中的命令或即时窗口获取此数据。我可以通过db命令在windbg中实现这一点,但是我很难找到visualstudio的特定命令。“调试.打印”不足,因为一旦遇到空字符,它就会停止打印 我知道这样一个命令存在,就像我以前使用过的一样,但我一辈子都找不到它。这就是我不写东西得到的结果。假设p是一个指向可以输入的字节数组的指针,如下所示: (p + start_pos),

我需要从我正在调试的应用程序的内存中提取一个特定字节宽的数据结构,最好是以一系列十六进制对的形式。我想从VisualStudio调试器中的命令或即时窗口获取此数据。我可以通过db命令在windbg中实现这一点,但是我很难找到visualstudio的特定命令。“调试.打印”不足,因为一旦遇到空字符,它就会停止打印


我知道这样一个命令存在,就像我以前使用过的一样,但我一辈子都找不到它。这就是我不写东西得到的结果。

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

(p + start_pos),[items_count]

在翻阅了一些文档之后,我找到了这个问题的答案。我想要的命令是,它别名为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
...  

您是否尝试过使用Visual Studio即时窗口?它允许您运行比手表或普通调试视图更大的代码片段。您甚至可以在即时窗口中创建一个变量,从内存地址开始,添加字节,然后转储变量的内容。首先设置一个断点,然后当它被点击时,在即时窗口中编写一些代码,它应该可以工作。Visual Studio有,在那里您可以看到实时更新的内存块。这不会产生非常可读的显示。使用内存窗口有什么问题?您甚至可以从中复制和粘贴。@PaulSanders的输出对我来说很好。而且这种方法是通用的,可以用来显示复杂的项目。啊,是的,但是OP要求,实际上,一个十六进制转储。使用您的方法,对于一些任意选择的内存位,我得到:
(unsigned char*)&msg,16 0x0019fc6c“n\nô\0\x13\x1\0\0\x1\0\0\0\0”
@PaulSanders您可以展开数组视图。它将列出各个值。这绝对不是一个十六进制转储,但是如果有人想要一个十六进制转储,那么内存窗口将是显而易见的选择。感谢您在这里分享您的解决方案,您可以稍后将其标记为答案。