2

次のシナリオがあります。

Windows 10 64bitを実行している Hyper-V マシンにカーネル デバッガー (Windbg) を接続しています。デバッグ対象のプロセスは32 ビットのユーザー モード プロセスであり、マシンがハングすることがある (ミニフィルターと通信する) ため、ユーザー モード デバッガーまたはリモート デバッガーを使用できません。

これで、シンボル サーバーができました。調査したいプロセスとスレッドがわかりました。どうすればよいでしょうか。

  1. このスレッドのみの呼び出し履歴を表示する
  2. モジュールのシンボルを読み込む

おまけの質問: 何らかの理由で、自分のプログラムのインスタンスがたくさんあります。「アクティブな」ものを除いて、残りは Process Explorer に表示されず、スレッドがなく、ハンドル数が 0 です。何が原因でしょうか?

私が試したこと:

!process ffffe08620a30800 7
(view all process threads)
...
       THREAD **ffffe0862212f800**  Cid 08a0.1cfc  Teb: 0000000000d6e000 Win32Thread: 0000000000000000 RUNNING on processor 0
        Not impersonating
        DeviceMap                 ffffcb0a55817c30
        Owning Process            ffffe08620a30800       Image:         avguard.exe
        Attached Process          N/A            Image:         N/A
        Wait Start TickCount      27338460       Ticks: 1 (0:00:00:00.015)
        Context Switch Count      2999214        IdealProcessor: 0             
        UserTime                  **00:17:51.125**
        KernelTime                00:06:14.671
        Win32 Start Address 0x00000000741bbfb4
        Stack Init ffffb481db842dd0 Current ffffb481db842a10
        Base ffffb481db843000 Limit ffffb481db83d000 Call 0
        Priority 8 BasePriority 8 UnusualBoost 0 ForegroundBoost 0 IoPriority 2 PagePriority 5
        Child-SP          RetAddr           : Args to Child                                                           : Call Site
        ffffb481`db842c40 00000000`77b1222c : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : nt!KiSystemServiceExit+0x2f (TrapFrame @ ffffb481`db842c40)
        00000000`0333ed18 00000000`00000000 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : wow64cpu!CpupSyscallStub+0xc
...

このスレッドは私が調査したいスレッドです。太字で示されているように、プロセッサの使用率が高くなっています。ユーザー時間: 17 分。ただし、スタックは役に立ちません。それから私はしました:

.thread /p /r /w ffffe0862212f800
Implicit thread is now ffffe086`2212f800
Implicit process is now ffffe086`20a30800
.cache forcedecodeuser done
Loading User Symbols
.ModLoad: 00000000`009b0000 00000000`00a25000   C:\Program Files (x86)\my process.exe
.ModLoad: 00007ffb`67e20000 00007ffb`67ff1000   C:\WINDOWS\SYSTEM32\ntdll.dll
.ModLoad: 00000000`778d0000 00000000`77922000   C:\WINDOWS\System32\wow64.dll
.ModLoad: 00000000`77850000 00000000`778c7000   C:\WINDOWS\System32\wow64win.dll
.ModLoad: 00000000`77b10000 00000000`77b1a000   C:\WINDOWS\System32\wow64cpu.dll

The context is partially valid. Only x86 user-mode context is available.
x86 context set
1: kd:x86> kb
  *** Stack trace for last set context - .thread/.cxr resets it
ChildEBP          RetAddr           Args to Child                                         
WARNING: Frame IP not in any known module. Following frames may be wrong.
db842cc0 00000000 00000000 00000000 00000000 **0x819613ca**

このアドレス 0x819613ca は何ですか? これが属するモジュールを抽出するにはどうすればよいですか? または、意味のあるコールスタックを抽出しますか? 調査をさらに進めるにはどうすればよいですか?

4

0 に答える 0