Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows WinDbg:调用堆栈和反汇编不一致_Windows_Assembly_Windbg_Disassembly - Fatal编程技术网

Windows WinDbg:调用堆栈和反汇编不一致

Windows WinDbg:调用堆栈和反汇编不一致,windows,assembly,windbg,disassembly,Windows,Assembly,Windbg,Disassembly,我正在用WinDbg调试一个程序 在崩溃现场,调用堆栈的最后两帧是: ChildEBP RetAddr WARNING: Stack unwind information not available. Following frames may be wrong. 0251bfe8 6031f8da npdf!ProvideCoreHFT2+0x24db0 0251c000 011eb7a5 npdf!ProvideCoreHFT2+0x5ac1a ... 我想了解帧1如何调用帧0。由于帧0

我正在用WinDbg调试一个程序

在崩溃现场,调用堆栈的最后两帧是:

ChildEBP RetAddr  
WARNING: Stack unwind information not available. Following frames may be wrong.
0251bfe8 6031f8da npdf!ProvideCoreHFT2+0x24db0
0251c000 011eb7a5 npdf!ProvideCoreHFT2+0x5ac1a
...
我想了解帧1如何调用帧0。由于帧0的返回地址是6031f8da,我打开反汇编窗口并跳转到该位置,代码如下:

...
6031f8d5 e8a6d0ffff      call    npdf!ProvideCoreHFT2+0x57cc0 (6031c980)
6031f8da 5f              pop     edi
...
我的问题是,在返回地址之前的call指令调用npdf!PROVIDECRHEHFT2+0x57cc0,而第0帧中的函数实际上是npdf!提供REHFT2+0x24db0。为什么会存在这种不一致性?我应该如何进行


多谢各位

您可能错过了
以下帧,可能是错误的
部分。。。事实上,在显示的帧之间可能有另一个函数调用。您可以查看
0x57cc0
,看看它是否实际设置了堆栈帧,以及它是否调用了其他任何东西。您还可以搜索
24db0
的调用站点。任何堆栈跟踪中的偏移部分都是不可靠的。不要使用它+24db0+57cc0等将始终是虚假的,尤其是在发布版本上,当调试信息正确时生成pdb,如果可用,则在优化之前使用解析地址(6031c980是正确的,因此function@Jester谢谢!我想你是对的。调用堆栈中显示的两个帧之间有函数调用。当查看+0x57cc0时,我发现更多函数调用…@blabb谢谢!我会照你说的做。