我得到了一个复杂的故障转储:一个(32 位)程序 (C++) 是用 Visual Studio 6 编写的,并在 64 位机器上执行。所以,我得到了一个 64 位的故障转储。可悲的是,我无法访问 VS 6(而且我认为 VS6 不能处理 64 位)。VS 2015 无法打开这个故障转储(32 位调试器无法调试 64 位..),所以我用 WinDBG(和我自己的 dmp 文件查看器 :) 进行了尝试。
查看堆栈仅显示系统地址 (0x7..)。
例如。:
. 0 Id: bdc.b40 Suspend: 0 Teb: 00000000`7efdb000 Unfrozen
Start: XXXX+0x4bf33d (00000000`008bf33d)
Priority: 2 Priority class: 128 Affinity: f
# Child-SP RetAddr Call Site
00 00000000`0008e2e8 00000000`73deaedc wow64win!NtUserGetMessage+0xa
01 00000000`0008e2f0 00000000`73e3d18f wow64win!whNtUserGetMessage+0x30
02 00000000`0008e350 00000000`73dc2776 wow64!Wow64SystemServiceEx+0xd7
03 00000000`0008ec10 00000000`73e3d286 wow64cpu!ServiceNoTurbo+0x2d
04 00000000`0008ecd0 00000000`73e3c69e wow64!RunCpuSimulation+0xa
05 00000000`0008ed20 00000000`77c7fb96 wow64!Wow64LdrpInitialize+0x42a
06 00000000`0008f270 00000000`77cdbd09 ntdll!LdrpInitializeProcess+0x17e3
07 00000000`0008f760 00000000`77c6a36e ntdll! ?? ::FNODOBFM::`string'+0x22a30
08 00000000`0008f7d0 00000000`00000000 ntdll!LdrInitializeThunk+0xe
在 ThreadInfoListStream 或
0:000> ~*
. 0 Id: bdc.b40 Suspend: 0 Teb: 00000000`7efdb000 Unfrozen
Start: XXXX+0x4bf33d (00000000`008bf33d)
Priority: 2 Priority class: 128 Affinity: f
[..]
有什么问题/我错在哪里?我该怎么做才能看到整个堆栈?是否有任何帮助/指导如何自行展开堆栈(我能够加载/读取 pdb,我可以访问转储中保存的内存,我已经对 TEB 的主要部分进行了未编码,. ..)。
谢谢