如何在 Visual Studio 2013 中显示堆栈内容(不是调用堆栈)

问题描述 投票:0回答:3

如何在 Visual Studio 2013 中查看堆栈内容(不是调用堆栈)?


查看 ESP 指向的位置和下方。在字符处显示内容

感谢您的帮助。

visual-studio visual-studio-2013
3个回答
13
投票

您可以通过转到“调试”>“Windows”>“寄存器”来执行此操作,获取 ESP 的位置,然后在“调试”>“Windows”>“内存”窗口中输入此地址。然而,那只会给你原始的记忆。

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


3
投票

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

如果真的想看到esp处的内存,那么可以在Memory debug窗口的Address输入框中输入esp

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

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


3
投票

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

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

如果在汇编级别调试并单步执行一些 PUSHes 和 POP,您应该看到内存窗格保持同步。

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

© www.soinside.com 2019 - 2024. All rights reserved.