実行中のプロセス/スレッドのコールスタックを表示するにはどうすればよいですか?

実行中のプロセス/スレッドのコールスタックを表示するにはどうすればよいですか?

誰かが私にコールスタックまたはスタックトレース実行中のプロセスの一部を取得して、分析してもらいました。

その情報はどうすれば入手できますか?

答え1

  1. 得るプロセスエクスプローラー

  2. 有効にするすべてのプロセスの詳細を表示からファイルメニュー:

    ここに画像の説明を入力してください

  3. メイン ペインで、関心のあるプロセスを選択します。

    ここに画像の説明を入力してください

  4. 選択したプロセスのコンテキストメニュー(右クリック)を開き、プロパティ:

    ここに画像の説明を入力してください

  5. 上のスレッドタブでは、そのプロセス内で実行中のスレッドのリストが表示されます。

    ここに画像の説明を入力してください

  6. 興味のあるスレッドを選択して、スタックボタン:

    ここに画像の説明を入力してください

  7. Process Explorer には、選択したスレッドの現在の呼び出しスタックが表示されます。

    ここに画像の説明を入力してください

シンボル

トラブルシューティングでより詳細な情報が必要な場合は、デバッグをロードすると非常に役立ちます。シンボルProcess Explorer に入力します。手順は次のとおりです。

  1. Windowsデバッガーがまだインストールされていない場合は、Windows 用デバッグ ツール初め。

  2. プロセスエクスプローラーで開くシンボルを構成する...からオプションメニュー:

    ここに画像の説明を入力してください

  3. デバッグ ツール (または別の Windows デバッガー) がインストールされている場合は、Process Explorer によってdbghelp.dllファイルが自動的に検出されます。インストールされていない場合は、ここで正しいパスを設定します。

    ここに画像の説明を入力してください

    シンボルパス次のようになります:

    SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols
    

    調整する必要があるのは だけですC:\Symbols。これは、デバッグ シンボルがキャッシュされる場所です。

答え2

clr プロセスのスタックが必要な場合は、ProcInsp を使用できます (私はその開発者であり、このツールは無料で使用できます)。

  1. インストールプロセス検査
  2. 興味のあるプロセスを見つけてクリックしてください プロセスのリスト
  3. スレッドをクリックします (ProcInsp はスレッドの名前としてアプリのエントリ ポイントを表示することに注意してください。.net インフラストラクチャのすべてのフレームをスキップします) スレッド一覧
  4. エントリポイントが強調表示されたスタックトレースが表示されます スタックトレース

関連情報