正確には strace ではありませんが、カーネルのコール スタックを可視化する方法があり、CPU 使用率が高いときにそれをサンプリングすることで、常に何が使用されているかを推定できます。
Process Explorerをインストールし、シンボル サーバー サポートを使用して構成してください。これは次の方法で実行できます。
- 更新されたdbghelp.dllを取得するためのWinDebug のインストール
- [オプション] | [オプション] でパスを設定して、このバージョンの dbghelp.dll を使用するように Process Explorer を設定します。Process Explorer の Symbols メニューを構成します。
- また、同じダイアログで、MS シンボル サーバーとローカル キャッシュが含まれるようにシンボル パスを設定します。
シンボル パスの値の例を次に示します。
SRV*C:\symbolcache*http://msdl.microsoft.com/download/symbols
(_NT_SYMBOL_PATH 環境変数を同じ値に設定して、デバッグ ツールが同じシンボル サーバーとキャッシュ パスを使用するようにすることができます)。ローカルにシンボルがあります。
このように Process Explorer を設定したら、プロセスのプロパティを取得し、[スレッド] タブに移動して、最もビジーなスレッドをダブルクリックします。これにより、Process Explorer が一時的にプロセスにフックし、スレッドのスタックをスキャンしてから、スタック上のさまざまなリターン アドレスのシンボルを調べます。リターン アドレスのシンボルとモジュール名 (MS 以外のサード パーティ製ドライバーの場合) から、CPU 時間が費やされている場所に関する強力な手がかりが得られます。