我正在调查WinDBG中的Windows转储文件。我可以通过命令.frame切换调用堆栈帧,但我发现寄存器总是包含最后一个上下文。 我的意思是,如果可以恢复属于不是最顶层的特定调用堆栈帧的上下文?
答案 0 :(得分:9)
如果您正在调试x64目标,可以使用:
.frame /r
查看帧中的寄存器。此信息基于图像中的展开数据,因此非常可靠。您还可以使用以下内容更改上下文:
.frame /c
在x86上,没有展开信息,所以这个技巧不起作用。 .frame仍然会向你显示寄存器的内容,但它不太可能是正确的(它基本上只是运气正确)。
答案 1 :(得分:0)
尝试findthis.py,这是通过反汇编callstack中每个帧的序言获得CFI(Call Frame Info)。
http://nick.luckygarden.org/find-this-ptr-within-a-callstack-in-a-dump-file/