2016-05-10 69 views
1

WinDBGを使用してカーネルモデルのダンプファイルを解析すると、特定のスレッドの情報を取得できます。しかし、私を混乱させるものがあります。ダンプファイルの "Wait Start TickCount"と "Ticks"の意味

次のキーワードの意味を理解してください。ありがとうございました。

  1. スタートのTickCountを待っダニ

  2. UserTime

  3. KernelTime


ここに1つexampですル。

THREAD b6b48908 Cid 1038.10b0 Teb: 7ffac000 Win32Thread: fd517868 WAIT: (WrUserRequest) UserMode Non-Alertable 
     b5700630 SynchronizationEvent 
    IRP List: 
     b6ae6ab8: (0006,01d8) Flags: 00060000 Mdl: 00000000 
    Not impersonating 
    DeviceMap     95bd9310 
    Owning Process   b5614788  Image:   iexplore.exe 
    Attached Process   N/A   Image:   N/A 
    Wait Start TickCount  27465609  Ticks: 109779 (0:00:28:32.563) 
    Context Switch Count  38627    
    UserTime     00:00:00.717 
    KernelTime    00:00:00.421 
    Win32 Start Address 0x6a6439a0 
    Stack Init b8b7ded0 Current b8b7d8e0 Base b8b7e000 Limit b8b7b000 Call 0 
    Priority 11 BasePriority 8 UnusualBoost 0 ForegroundBoost 2 IoPriority 2 PagePriority 5 
    ChildEBP RetAddr Args to Child    
    b8b7d8f8 8328aefd b6b48908 8333d008 83339e20 nt!KiSwapContext+0x26 (FPO: [Uses EBP] [0,0,4]) 
    b8b7d930 83289d57 b5700630 b6b48908 b6b489ec nt!KiSwapThread+0x266 
    b8b7d958 83285af4 b6b48908 b6b489c8 00000000 nt!KiCommitThreadWait+0x1df 
    b8b7dad4 94bac293 00000001 b8b7db0c 00000001 nt!KeWaitForMultipleObjects+0x535 
    b8b7db44 94bac06c 000025ff 00000000 00000001 win32k!xxxRealSleepThread+0x20b (FPO: [SEH]) 
    b8b7db60 94ba90b4 000025ff 00000000 00000001 win32k!xxxSleepThread+0x2d (FPO: [3,0,0]) 
    b8b7dbb8 94bac685 b8b7dbe8 000025ff 00000000 win32k!xxxRealInternalGetMessage+0x4b2 (FPO: [SEH]) 
    b8b7dc1c 83249dc6 0295c7dc 00000000 00000000 win32k!NtUserGetMessage+0x4d (FPO: [SEH]) 
    b8b7dc1c 77366bf4 0295c7dc 00000000 00000000 nt!KiSystemServicePostCall (FPO: [0,3] TrapFrame @ b8b7dc34) 
    0295c790 00000000 00000000 00000000 00000000 ntdll!KiFastSystemCallRet (FPO: [0,0,0]) 

答えて

3

スタートのTickCountは、スレッドが「待機中」の状態に「実行中」の状態から変化したときに、すなわち、待機して開始したときのコンピュータの内部時刻表現で待ちます。

ティックは、現在の待機開始TickCountとの違いです。これらの値は、スレッドのスケジューリング(優先順位などの他のものとともに)に影響を与える可能性があります。

Usertimeは、スレッドがユーザーモード機能を持つ呼び出しスタックを一番上に持っていた時間です。

Kerneltimeは、スレッドがカーネルモード機能を持つ呼び出しスタックを先頭に持つ時間です。これは、ユーザーモードのデバッグで!runawayによって表示される値に対応する必要があります。どちらの時間にも、スレッドが実際にCPU命令を実行していた実際の実行時間だけが待ち時間を含んでいません。

+0

Thanks Tomas and Lieven。スレッドがプロセッサ上で実行されている場合、そのWait-Start-TickCountは最後に待機を開始した時刻とみなされます。 – Lucky

+1

@ Lucky:はい、次回の待ち時間が始まると更新されます –