Windows でプロセスをトレース/プロファイリングするにはどうすればよいですか?

Windows でプロセスをトレース/プロファイリングするにはどうすればよいですか?

SQL Server の問題を調査するときに、Visual Studio デバッガーを SQL Server にアタッチし、コール スタックを調べて何を実行しているかを把握できると便利な場合があります (パブリック シンボルが使用可能であり、多くの場合、メソッド名から有用な情報を推測できます)。

推測できる内部情報の種類の好例は、このブログ記事でそれが私の試みにインスピレーションを与えました。

ただし、これはかなり時間がかかり、面倒なプロセスになることがあります。通常、デバッガーをアタッチして、対象のコードをループで実行し、調査中の事項に関係すると思われるコール スタックに到達するまで、継続的に中断して続行します。その後、コードをステップ実行して、呼び出されるメソッド名を確認します。ただし、これには時間がかかります。

これを自動化して、短期間に呼び出されたすべてのメソッドをログに記録し、後でログ ファイルを確認する方法はありますか?

答え1

間違っていなければ、おそらくプロセスモニター(別名procmon)を探しているのでしょう。これは以下から入手できます。このマイクロソフトのウェブサイト

具体的には、「スタック概要」メニューオプションにこの種の情報があります。詳細については、PM2-6: スタックの展開

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

答え2

プロファイラーVisual Studio のより高いバージョンでは、これを実行できます。

出力例

スクリーンショット

(そして答えはここにこれがなぜ役に立つのかを示しています)

あるいはさらにWindows パフォーマンス ツールキットは無料で、同様の機能やそれ以上の機能も備えています。これに関する優れたビデオシリーズは、https://channel9.msdn.com/Search?term=Defrag%20tools%20wpt#ch9Search

関連情報