代码之家  ›  专栏  ›  技术社区  ›  Ralph Erdt

WinDBG显示不完整堆栈

  •  2
  • Ralph Erdt  · 技术社区  · 7 年前

    遗憾的是,我无法访问VS 6(我认为VS6无法处理64位)。VS 2015无法打开此崩溃转储(32位调试器无法调试64位..),因此我使用WinDBG(和我自己的dmp文件查看器:)进行了尝试。

    如。:

     .  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的主要部分的编码,…)。

    1 回复  |  直到 7 年前
        1
  •  4
  •   Thomas Weller    7 年前

    这个 .effmach 命令可用于在架构之间切换。它需要 x86 amd64 作为一个论点。

    您还可以加载 wow64exts 扩大它有一个 !sw 在两种模式之间切换的命令。

    k 变化:

    0:000> k
    Child-SP          RetAddr           Call Site
    00000000`006ee8e8 00000000`60db21ef wow64cpu!CpupSyscallStub+0xc
    00000000`006ee8f0 00000000`60e5bfa1 wow64cpu!Thunk0Arg+0x5
    00000000`006ee9a0 00000000`60e4cbb0 wow64!RunCpuSimulation+0xf311
    00000000`006eea20 00007ff9`0bef2a11 wow64!Wow64LdrpInitialize+0x120
    00000000`006eecd0 00007ff9`0bf289c6 ntdll!EtwEventProviderEnabled+0x1cb1
    00000000`006ef0d0 00007ff9`0bed9fae ntdll!memset+0x1c006
    00000000`006ef150 00000000`00000000 ntdll!LdrInitializeThunk+0xe
    
    0:000> .load wow64exts
    0:000> !sw
    Switched to 32bit mode
    
    0:000:x86> k
    ChildEBP RetAddr  
    007eeebc 09ad86fe win32u!NtUserWaitMessage+0xc
    WARNING: Frame IP not in any known module. Following frames may be wrong.
    007eefd8 7303eaf6 0x9ad86fe
    007eefe4 730470e9 clr!CallDescrWorkerInternal+0x34
    007ef038 73047714 clr!CallDescrWorkerWithHandler+0x6b
    007ef0a0 731dac11 clr!MethodDescCallSite::CallTargetWorker+0x16a
    007ef1cc 731dad09 clr!RunMain+0x1ad