如何在Visual Studio 2013中查看堆栈内容(而不是调用堆栈)?查看ESP所指向的位置及其下方。在字符处显示内容。谢谢你的帮助
72qzrwbm1#
你可以通过进入Debug〉Windows〉Registers,获取ESP的位置,然后在Debug〉Windows〉Memory窗口中输入这个地址。正如OwenWengerd在注解中指出的那样,如果你在调试本机代码,你可以在地址字段中简单地输入ESP。
nnsrf1az2#
另一个答案对于32位代码是正确的,但是对于64位代码它只是“半正确”。如果你真的想看到 esp 处的内存,那么你可以在内存调试窗口的地址输入框中输入 esp。然而,这可能不是你想要的64位代码。堆栈在 rsp 而不是 esp。如果在Memory debug窗口的Address input文本框中输入 rsp,则会看到堆栈内存。如果在Address input文本框中输入 esp,则会看到(rsp & 0x00000000ffffff)处的内存,这可能不是您想要的。
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自己的具体情况调整你所读到的内容,即打开寄存器窗格,找出你自己的堆栈指针寄存器名称。
3条答案
按热度按时间72qzrwbm1#
你可以通过进入Debug〉Windows〉Registers,获取ESP的位置,然后在Debug〉Windows〉Memory窗口中输入这个地址。
正如OwenWengerd在注解中指出的那样,如果你在调试本机代码,你可以在地址字段中简单地输入ESP。
nnsrf1az2#
另一个答案对于32位代码是正确的,但是对于64位代码它只是“半正确”。
如果你真的想看到 esp 处的内存,那么你可以在内存调试窗口的地址输入框中输入 esp。
然而,这可能不是你想要的64位代码。堆栈在 rsp 而不是 esp。
如果在Memory debug窗口的Address input文本框中输入 rsp,则会看到堆栈内存。如果在Address input文本框中输入 esp,则会看到(rsp & 0x00000000ffffff)处的内存,这可能不是您想要的。
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自己的具体情况调整你所读到的内容,即打开寄存器窗格,找出你自己的堆栈指针寄存器名称。