“内存”窗口
利用**“内存”窗口可以看到应用程序所占用内存空间的情况。 在“监视”窗口、“快速监视”对话框、“自动”窗口和“局部变量”窗口,可看到存储于内存中特定位置的变量的内容。 但在“内存”窗口中可看到尺寸较大的图片。 这对于检查大片的数据(如缓冲区和大的字符串)很方便,在其他窗口中显示就不太好。 然而,“内存”**窗口不仅限于显示数据。 该窗口可以显示内存空间中的任何内容,不论这些内容是数据、代码还是未分配内存中的无用随机位。
只有在**“选项”对话框的“调试”节点中启用了地址级调试后,“内存”**窗口才可用。 **“内存”**窗口对于脚本或 SQL 不可用,原因是这些语言不能识别内存概念。
打开“内存”窗口
打开“内存”窗口
如果尚未进入调试模式,请开始调试。
在**“调试”菜单中,指向“窗口”。 然后,指向“内存”,然后单击“内存 1”、“内存 2”、“内存 3”或“内存 4”。(较低版本的 Visual Studio 只有一个“内存”窗口。 如果使用的是某个较低版本,则只需单击“内存”**。)
在“内存”窗口中分页
**“内存”**窗口拥有一个以非标准方式工作的垂直滚动条。 如今的计算机地址空间非常大,抓取滚动条滚动块并将其移动到任意位置,就容易找不到地址。 为此,滚动块就像“装了弹簧”,总是保持在滚动条的中心。 在本机代码应用程序中,可以向上或向下翻页,但不能随便滚动。
较高的内存地址显示在窗口的底部。 若要查看较高的地址,请向下滚动而不是向上滚动。
在内存中向上或向下翻页
若要向下翻页(移动到较高的内存地址),请在垂直滚动条中单击滚动块以下的位置。
若要向上翻页(移动到较低的内存地址),请在垂直滚动条中单击滚动块以上的位置。
选择内存位置
如果要立即转到内存中的选定位置,可以使用拖放操作或在**“地址”**框中编辑值的方法来这样做。 **“地址”框不仅接受数值,而且接受计算结果为地址的表达式。 默认情况下,“内存”窗口将“地址”**表达式视为活动表达式,即程序执行时将对该表达式进行重新计算。 活动表达式可有极大用处。 例如,可以使用它们查看指针所指向的内存。
通过拖放操作选择内存位置
在任一窗口中选择内存地址或选择包含内存地址的指针变量。
将地址或指针拖到**“内存”**窗口。
通过编辑选择内存位置
在**“内存”窗口中选择“地址”**框。
键入或粘贴您要查看的地址,然后按 Enter。
更改“内存”窗口显示信息的方式
可以自定义**“内存”**窗口显示内存内容的方式。 默认情况下,内存内容以十六进制格式显示为一个字节的整数,列数由当前的窗口宽度自动确定。
更改内存内容的格式
右击**“内存”**窗口。
选择所需的格式。
更改“内存”窗口中的列数
在**“内存”窗口顶部的工具栏中定位“列”**列表。
在**“列”列表中,选择您要显示的列数,或者选择“自动”**以便根据窗口宽度自动调整。
如果不想在程序执行时更改**“内存”**窗口中的内容,可以关闭活动表达式计算功能。
打开或关闭活动计算
右击**“内存”**窗口。
在快捷菜单上单击**“自动重新计算”**。
如果打开活动计算,则该选项处于选中状态,单击该选项将关闭活动计算。 如果关闭活动计算,则该选项未处于选中状态,单击该选项将打开活动计算。
可以隐藏或显示**“内存”**窗口顶部的工具栏。 当工具栏隐藏时,无法访问“地址”框或其他工具。
切换工具栏
右击**“内存”**窗口。
在快捷菜单上,单击**“显示工具栏”**。
工具栏将出现或不出现,具体取决于它先前的状态。
跟踪内存中的指针
在本机代码应用程序中,可以将寄存器名称用作活动表达式。 例如,可以使用堆栈指针跟踪堆栈。
跟踪内存中的指针
在**“内存”窗口中的“地址”**框中键入一个指针表达式。 指针变量必须在当前范围内。 根据所使用的语言,可能必须取消引用指针。
按 Enter。
现在,当使用执行命令(如**“单步执行”**)时,所显示的内存地址将随指针变化而自动变化。