WinDbgのよく使用されるコマンドシリーズ---スレッド関連の操作 -

〜(スレッド・ステータス)

チルダ(〜)コマンド指定されたスレッドまたはプロセス内のすべてのスレッドの現在の状態を表示します。

〜スレッド

 パラメータ:

    • スレッド
      表示されるように、指定されたスレッドを。このパラメータを省略すると、すべてのスレッドが表示されます。

環境:

モード

ユーザモードのみ

目標

リアルタイムのクラッシュダンプ

プラットフォーム

完成

あなたは多くのコマンドの前にスレッドのシンボルを追加することができます。次の例は、このコマンドを使用する方法を示します。次のコマンドは、すべてのスレッドの状態を表示します。
067>:0  
   0イド:2854.2fe8サスペンド:1 TEB:00dfc000固定解除
   1イド:2854.24c8サスペンド:1 TEB:00dff000固定解除
   2イド:2854.1fd4サスペンド:1 TEB:00c02000固定解除
   3イド:2854.1d60サスペンド:1 TEBを:00c05000固定解除
   4イド:サスペンド2854.5ac:1 TEB:00c08000固定解除
   5イド:2854.1504サスペンド:1 TEB:00c0e000固定解除
   6イド:2854.3200サスペンド:1 TEB:00c11000固定解除
   7イド:2854.290サスペンド:1 TEB:00c14000固定解除
   8同上:サスペンド2854.2fbc:1 TEB:00c26000固定解除

 次のコマンドは、すべてのスレッドを表示します。

0:067> 〜* 
   0イド:2854.2fe8サスペンド:1 TEB:00dfc000固定解除
      スタート!DIYHomeのWinMainCRTStartup(00a74f1b)
      優先度:0優先度クラス:32アフィニティ:FF 
   1イド:サスペンド2854.24c8:1 TEB:00dff000固定解除
      開始: !NTDLL TppWorkerThread(77711440)
      優先度:0優先度クラス:32アフィニティ:FF 
   2854.1fd4サスペンド:1をTEB:00c02000固定解除2イド
      スタート!:NTDLL TppWorkerThread(77711440)
      優先度:0優先度クラス:32アフィニティ:FF 
   3イド:2854.1 D60サスペンド:1 TEB:00c05000固定解除
      スタート!:NTDLL TppWorkerThread(77711440)
      優先度:0優先度クラス:32アフィニティ:FFを 
   4イド:サスペンド2854.5ac:1 TEB:00c08000固定解除
      開始:NTDLL TppWorkerThread(77711440)!
      優先度:0優先度クラス:32アフィニティ:FF 
   5イド:2854.1504サスペンド:1 TEB:00c0e000固定解除
      スタート!:NTDLL TppWorkerThread(77711440)
      優先度:0優先度クラス:32アフィニティ:FF 
   6同上: 2854.3200サスペンド:1 TEB:00c11000固定解除
      スタート!:NTDLL TppWorkerThread(77711440)
      優先度:0優先度クラス:32アフィニティ:FF 
   7イド:2854.290サスペンド:1 TEB:00c14000固定解除
      スタート!combase CRpcThreadCache :: RpcWorkerThreadEntry(74592460)
      優先度: 0優先度クラス:32アフィニティ:FF  
   8 Idは:サスペンド2854.2fbc:1 TEB:00c26000固定解除を
      スタート:nvoglv32 DrvValidateVersion + 0x93e0(690970c0)!
      優先度:0優先クラス:32アフィニティ:FF

あなたは、ディスプレイの詳細情報を見ることができます。

次のコマンドは、現在アクティブなスレッドを表示します。

0:067> 〜。67同上:2854.1958サスペンド:0 TEB:00cec000固定解除
      スタート!msvcr120 _threadstartex(6330bfb4)
      優先度:0優先度クラス:32アフィニティ:FF

次のコマンドは、例外を引き起こした最初のスレッドが表示され(またはプロセスに結合した場合、デバッガで活性です)。

0:000>〜#
#67イド:2854.1958サスペンド:0 TEB:00cec000固定解除
      スタート!msvcr120 _threadstartex(6330bfb4)
      優先度:0優先クラス:32アフィニティ:FF

次のコマンドは、スレッド2の数を表示します

0:000>〜2 
   2イド:サスペンド2854.1fd4:1 TEB:00c02000固定解除
      スタート!:NTDLL TppWorkerThread(77711440)
      優先度:0優先度クラス:32アフィニティ:FFを
0:001>〜
   0 ID:サスペンド4dc.470:0 TEB 7ffde000固定解除を1 ID:サスペンド4dc.534:0 TEB 7ffdd000固定解除
#2 ID:4dc.5a8サスペンド:0 TEB 7ffdc000固定解除を

出力の最初の行では、0小数スレッド、4DC進プロセスIDの数であり、470は六角スレッドIDであり、0x7ffde000はTEBアドレスで、解凍は、スレッドの状態です。スレッド1の前にピリオド(。)スレッドが現在のスレッドであることを示します。番号記号(#)の前に、スレッド2は、このスレッドは、もともと異常を引き起こし、またはプロセスにアタッチデバッガでアクティブであるスレッドであることを示しています。

〜E(スレッド固有のコマンド)

〜Eのコマンドは、特定のスレッドまたはターゲットプロセス内のすべてのスレッドに対して1つ以上のコマンドを実行します。E(入力値)コマンドの混乱で、このコマンドを使用しないでください。

〜スレッドのEのCommandString

パラメータ:

  • スレッドは、
    スレッド実行のCommandStringのためのデバッガを指定しました。
  • CommandStringが
    実行される1つ以上のコマンドを指定します。あなたは、複数のコマンドを区切るためにセミコロンを使用する必要があります。CommandStringは、入力ラインの残りの部分を含みます。文字「e」を、次のすべてのテキストは、文字列の一部として解釈されています。引用符で囲まれてのCommandStringしないでください。

環境:

モード

ユーザモードのみ

目標

リアルタイムのクラッシュダンプ

プラットフォーム

完成

あなたはユーザーモードでのみスレッドを指定することができます。カーネルモードでは、チルダ(〜)は、プロセッサことを示しています。とき、あなたは〜eコマンドはスレッドで、〜eコマンドは、いくつかの入力を保持します。たとえば、次の2つのコマンドは同等です。

0:000>〜2eのR; K; KD 

0:000>〜2R; 〜2K; 〜2KD

 しかし、〜E修飾子は繰り返しコマンドや拡張コマンドを使用することができます。あなたはこの方法で修飾子を使用する場合、それは追加の入力を排除することができます。たとえば、次のコマンドリピート!GLEは、デバッグ対象のスレッド毎にGLE拡張コマンドを使用します。

0:000>〜* E GLE! 

コマンドの実行中にエラーが発生した場合は、次のコマンドを続行。あなたは修飾子ラン〜eを使用することはできません(G、GH、GN、GN、GU、P、PA、PC、T、TA、TB、TC、重量)。〜電子修飾子jを(それが実行されていない場合)は、zまたは条件コマンドを一緒に使用(実行時に実行)することができません。あなたが複数のプロセスをデバッグしたい場合は、非アクティブなプロセスの仮想メモリ空​​間にアクセスするために〜のeコマンドを使用することはできません。

 〜F(フリーズスレッド)

〜Fは停止して、解凍を待つために、指定されたスレッドを凍結するコマンド。(メモリフィル)は、fとコマンドの混乱を、このコマンドを使用しないでください。

〜糸F 

パラメータ:

  • スレッドは
    凍結されたスレッドを指定します。

環境:

モード

ユーザモードのみ

目標

リアルタイムのクラッシュダンプ

プラットフォーム

完成

あなたはユーザーモードでのみスレッドを指定することができます。カーネルモードでは、チルダ(〜)は、プロセッサことを示しています。〜fコマンドは、指定されたスレッドのフリーズの原因となります。デバッガが有効にすると、ターゲット・アプリケーションは、予想通り、他のスレッドが実行されます実行を継続することができ、そしてこのスレッドは停止したままになります。
次の例は、このコマンドを使用する方法を示します。次のコマンドは、すべてのスレッドの現在のステータスが表示されます。

0:000>〜* K

次のコマンドフリーズは、スレッドの現在の例外につながりました。

0:000>〜#F

このスレッドの状態が中断されたかどうかを確認するには、次のコマンドを実行します。

 0:000>〜* K

 〜U(スレッドをアンフリーズ)

 〜Uは、指定されたスレッドの凍結を解除するためのコマンド。

〜N(スレッドをサスペンド)

指定されたスレッドの実行を滞在〜Nの順。コマンドあたりN〜時間、スレッドは1で数の増加を停止します。このコマンドは、スレッドの開始アドレスを使用する場合。

〜メートル(再開スレッド)

〜Mコマンドは、指定されたスレッドを実行し続けています。〜Mは、スレッドがカウントが1減少し、サスペンド、それぞれ使用することを命じます。

〜S(現在のスレッドを設定します)

〜sのコマンドセットまたは表示し、現在のスレッドの数。ユーザモードでは、〜sの現在のスレッドが提供されます。で、このコマンドを使用しないでください〜S(現在のプロセッサの変更)(唯一のカーネルモードで動作します)コマンドを、| S(セット現在のプロセス)コマンドで、|| S(設定された現在のシステム)コマンドまたはS(メモリ検索)コマンドの混乱を。

〜スレッド秒
〜秒

パラメータ:

  • スレッドは、
    設定またはスレッドの表示するように指定します。
あなたはユーザーモードでのみスレッドを指定することができます。カーネルモードでは、チルダ(〜)は、プロセッサことを示しています。 あなたは〜の構文を使用している場合、デバッガは現在のスレッドに関する情報が表示されます。 このコマンドは、現在の命令の現在のシステム、プロセスとスレッドのも解体。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

おすすめ

転載: www.cnblogs.com/yilang/p/11445709.html