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

Tal*_*Tal 6 visual-studio visual-studio-2013

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


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

谢谢您的帮助.

Bri*_*sen 9

您可以通过转到Debug> Windows> Registers,获取ESP的位置,然后在Debug> Windows> Memory窗口中输入该地址来完成此操作.但是,这只会给你原始内存.

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

  • 没有必要从"寄存器"窗口获取ESP的值.只需在Memory窗口的地址字段中输入ESP,调试器就会解析其当前值. (3认同)

tom*_*255 6

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

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

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

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


hft*_*hft 3

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

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

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

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