在调试期间,“内存”窗口显示应用程序正在使用的内存空间。
调试器窗口(如监视窗口、自动窗口、局部变量窗口和快速监视对话框)显示变量,这些变量存储在内存中的特定位置。“内存”窗口向您显示整体图片。内存视图便于检查在其他窗口中显示不好的大数据块(例如缓冲区或大字符串)。
内存窗口不限于显示数据。它显示内存空间中的所有内容,包括数据、代码和未分配内存中的随机垃圾位。
内存窗口不可用于脚本或SQL调试。这些语言不能识别内存概念。
要启用内存窗口,必须在“工具>选项”(或“调试>选项”)>调试>常规中选择“启用地址级调试”。
打开“内存”窗口
-
请确保启用地址级调试中选择工具 > 选项(或调试 > 选项) >调试 > 常规。
-
开始调试通过选择绿色箭头,按F5,或选择调试 > 开始调试。
-
下调试 > Windows > 内存,选择内存 1,内存 2,内存 3,或内存 4。 (某些版本的Visual Studio产品/服务只有一个内存窗口。)
![](https://img2018.cnblogs.com/blog/142275/201907/142275-20190730152156161-1377427417.png)
计算机的地址空间很大,您可以通过滚动内存窗口轻松地丢失您的位置。
较高的内存地址显示在窗口的底部。要查看更高的地址,请向下滚动。要查看较低的地址,请向上滚动。
您可以使用拖放或在“ 地址”字段中输入地址,立即转到“ 内存”窗口中的指定地址。“ 地址”字段接受字母数字地址和计算地址的表达式,例如。e.User.NonroamableId
要强制立即重新评估“ 地址”字段中的表达式,请选择“ 自动重新评估自动”图标的圆角箭头。
默认情况下,“ 内存”窗口将“ 地址”表达式视为实时表达式,在应用程序运行时将其重新评估。例如,实时表达式可用于查看指针变量触及的内存。
要使用拖放移动到内存位置:
-
在任何调试器窗口中,选择内存地址或包含内存地址的指针变量。
-
将地址或指针拖放到“ 内存”窗口中。该地址随后出现在“ 地址”字段中,“ 内存”窗口将调整为在顶部显示该地址。
要在“地址”字段中输入内存位置,请移至内存位置:
- 在“ 地址”字段中键入或粘贴地址或表达式,然后按Enter键,或从“ 地址”字段的下拉列表中选择它。“ 内存”窗口调整为在顶部显示该地址。
按下回车键,如下图:
但是个人看不懂里面具体的内容。
默认情况下,内存内容以十六进制格式显示为1字节整数,窗口宽度决定显示的列数。您可以自定义“ 内存”窗口显示内存内容的方式。
要更改内存内容的格式:
- 在“ 内存”窗口中单击鼠标右键,然后从上下文菜单中选择所需的格式。
要更改“内存”窗口中的列数:
- 选择“ 列”字段旁边的下拉箭头,然后选择要显示的列数,或者根据窗口宽度选择“ 自动”进行自动调整。也可以手动输入数字。
如果您不希望在应用程序运行时更改“ 内存”窗口的内容,则可以关闭实时表达式评估。
要切换实时评估:
-
在“ 内存”窗口中单击鼠标右键,然后在上下文菜单中选择“ 自动重新评估”。
您可以隐藏或显示“ 内存”窗口顶部的工具栏。隐藏工具栏时,您将无法访问“ 地址”字段或其他工具。
要切换工具栏显示:
- 在“ 内存”窗口中单击鼠标右键,然后在上下文菜单中选择“ 显示工具栏 ”。工具栏显示或消失,具体取决于其先前的状态。
在本机代码应用程序中,您可以将注册名称用作实时表达式。例如,您可以使用堆栈指针跟随堆栈。
要通过内存跟踪指针:
-
在“ 内存窗口地址”字段中,输入当前范围内的指针表达式。根据语言的不同,您可能需要取消引用它。
-
按Enter键。
使用诸如Step之类的调试命令时,“ 地址”字段和“ 内存”窗口顶部显示的内存地址会随着指针的更改而自动更改。