在visual studio 2013上显示堆栈内容(不是堆栈调用)

时间:2014-04-24 17:39:13

标签: visual-studio visual-studio-2013

我如何在visual studio 2013上查看Stack内容(而非堆栈调用)?


查看ESP指向和下方的位置。在char。上显示内容。

感谢您的帮助。

3 个答案:

答案 0 :(得分:8)

您可以转到Debug>来执行此操作。 Windows>注册,获取ESP的位置,然后在Debug>中输入此地址。 Windows>记忆窗口。但是,这只会给你原始记忆。

正如OwenWengerd在评论中指出的那样,如果你正在调试本机代码,你可以在地址字段中输入ESP。出于某种原因,这不适用于托管代码。

答案 1 :(得分:1)

另一个答案对于32位代码是正确的,但是对于64位代码它只是“半正确”。

如果您确实想查看 esp 处的内存,则可以在“内存”调试窗口的“地址”输入框中输入 esp

但是,这可能不是您想要的64位代码。堆栈位于 rsp 而不是 esp

如果在“内存”调试窗口的“地址输入”文本框中输入 rsp ,则将看到堆栈内存。如果在“地址”输入文本框中输入 esp ,则会在( rsp &0x00000000ffffffff)处看到内存,这可能不是您想要的。

答案 2 :(得分:0)

您可以重新创建一些较旧的 DOS 调试器,例如 Turbo Debug,并带有一个排列好的内存窗格:

  1. 打开内存窗格。
  2. 在上下文菜单中,为 32 位堆栈(分别为 64-)选择 4 字节整数(分别为 8 字节)。
  3. 选择 1 列(或减少窗格的宽度以只显示 1 列,无论哪种最适合您;您也可能希望在解决方案资源管理器下显示此窄窗格,它几乎自然只有一列)
  4. 在地址栏中输入 esp (resp. rsp)。
  5. 点击刷新按钮,地址栏会重新评估每一步。

如果在程序集级别调试并逐步执行一些 PUSH 和 POP,您应该看到内存窗格保持同步。

注意:这是用 x86 或 amd64 架构编写的,这不是 VS 唯一支持的架构。如果您使用的是另一种架构,请根据您的 CPU 自己的具体情况调整您读取的内容,即打开寄存器窗格以查找您自己的堆栈指针寄存器名称。