web-dev-qa-db-ja.com

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

誰かが実行中のプロセスのコールスタックまたはスタックトレースを取得して、それを分析できるようにしてほしいと頼みました。

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

14
Der Hochstapler
  1. Get Process Explorer

  2. FileメニューからShow All Details for All Processesを有効にします:

    enter image description here

  3. メインペインで、必要なプロセスを選択します。

    enter image description here

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

    enter image description here

  5. Threadsタブで、そのプロセス内で実行中のスレッドのリストを確認できます。

    enter image description here

  6. 関心のあるスレッドを選択し、Stackボタンをクリックします。

    enter image description here

  7. プロセスエクスプローラーに、選択したスレッドの現在のコールスタックが表示されます。

    enter image description here

シンボル

トラブルシューティングで詳細を取得する必要がある場合は、デバッグシンボルをProcess Explorerにロードすると非常に役立ちます。こうやって:

  1. Windowsデバッガーをまだインストールしていない場合は、まず Debugging Tools for Windows をインストールする必要があります。

  2. プロセスエクスプローラーで、オプションメニューからConfigure Symbols ...を開きます:

    enter image description here

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

    enter image description here

    Symbols pathは次のようになります:

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

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

35
Der Hochstapler