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

owfi6suc  于 2023-04-12  发布在  其他
关注(0)|答案(3)|浏览(480)

如何在Visual Studio 2013中查看堆栈内容(而不是调用堆栈)?
查看ESP所指向的位置及其下方。在字符处显示内容。
谢谢你的帮助

72qzrwbm

72qzrwbm1#

你可以通过进入Debug〉Windows〉Registers,获取ESP的位置,然后在Debug〉Windows〉Memory窗口中输入这个地址。
正如OwenWengerd在注解中指出的那样,如果你在调试本机代码,你可以在地址字段中简单地输入ESP。

nnsrf1az

nnsrf1az2#

另一个答案对于32位代码是正确的,但是对于64位代码它只是“半正确”。
如果你真的想看到 esp 处的内存,那么你可以在内存调试窗口的地址输入框中输入 esp
然而,这可能不是你想要的64位代码。堆栈在 rsp 而不是 esp
如果在Memory debug窗口的Address input文本框中输入 rsp,则会看到堆栈内存。如果在Address input文本框中输入 esp,则会看到(rsp & 0x00000000ffffff)处的内存,这可能不是您想要的。

wtzytmuj

wtzytmuj3#

您可以重新创建一些较旧的DOS调试器,如Turbo Debug,具有排列的内存窗格:
1.打开内存窗格。
1.在上下文菜单中,为32位堆栈(分别为64位)选择4字节整数(分别为8字节)。
1.选择1列(或减小窗格的宽度,使其只显示1列,只要最适合您;你也可能想在你的解决方案资源管理器下显示这个窄窗格,在那里它几乎自然地只有一列)
1.在地址栏中输入esp(resp. rsp)。
1.点击刷新按钮,地址栏会在每一步重新计算。
如果在程序集级别进行调试并单步执行一些PUSHes和POP,您应该看到内存窗格保持同步。
注意:这是针对x86或amd 64架构编写的,而这些架构并不是VS唯一支持的架构。如果你在另一个架构上,请根据你的CPU自己的具体情况调整你所读到的内容,即打开寄存器窗格,找出你自己的堆栈指针寄存器名称。

相关问题