使用Visual Studio调试器的“监视”窗口,是否可以观察内存位置的值?

27

我知道有四个内存窗口,但我更喜欢在监视窗口中显示单个值,并且我想知道是否可以在监视窗口中指定要监视的内存位置。

仅输入地址会将其转换为十六进制地址。

2个回答

41

如果您想要查看特定的内存位置,那么您需要告诉调试器该位置所对应的对象类型。不要仅仅使用 0x00aabbcc 这样的地址,而是使用 (SomeType*)0x00aabbcc 来指定类型。一旦调试器了解了内存位置的类型,它将对其像对待一个有类型的本地变量一样进行处理并相应地显示值。


1
我希望VS不要试图过于聪明,需要知道数据类型才能查看内存位置上的内容。我宁愿它有点傻,只是在内存位置上显示十六进制转储 :P - SW_user2953243
6
它已经有了这个记忆窗口。只需将变量拖放到其中(或粘贴十六进制地址),它就会显示原始内存状态。 - Neutrino

1

请查看官方网站answer,该页面提供了与其他答案同样有效的方法。

该页面的“通过内存跟踪指针”部分如下:

在本地代码应用程序中,您可以使用寄存器名称作为实时表达式。例如,您可以使用堆栈指针来跟踪堆栈。

要通过内存跟踪指针

  1. Memory窗口的Address框中,键入一个指针表达式。指针变量必须在当前范围内。 根据语言的不同,您可能需要对其进行解引用。

  2. 按下 ENTER 。现在,当您使用诸如Step之类的执行命令时,显示的内存地址将随着指针的更改而自动更改。


在内存窗口的地址框中,输入一个指针表达式。什么是指针表达式?我尝试的所有方法都不起作用。 - Dan Bechard
1
一个指针表达式可能是这样的:*(int*)(ebp+0ch)。它将 ebp+0ch 视为 int 指针,然后对其进行解引用。 - Yuval

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接