SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

Process Monitor / Process Explorer でコールスタックを確認する

leave a comment

Windows Sysinternals で提供されている Process Monitor / Process Explorer は端末内で発生している各種事象を調査するのに強力なツールで Windows Server 運用者は活用する機会が多いのではないでしょうか。

これらのツールでは、シンボルの設定をすることができます。

image

適切なシンボルの設定をすると、各情報を確認した際にコールスタックの情報を確認することができるようになります。

左が初期状態、右が適切に設定した場合のスレッドの表示となるのですが、適切に設定をした場合は、各ファイルのオフセットがブレークダウンして解決されていますね。動作を確認する際にはこの情報がヒントとなることも多々あります。

image

Process Monitor / Porcess Explorer ともに、の場合は、Options -> Configure Symbols でシンボルの設定を変更することができます。

デフォルトだと、次のような設定になっているのではないでしょうか。

image

この設定だとコールスタックの解決を行うことができません。

DbgHelp.dll Path はデフォルトで設定されていますが、SYSTEM32 配下のものではコールスタックを解決することができません。

dbghelp.dll については、Windows SDK の Debugging Tools for Windows をインストールすることで、解決に使用できる dbghelp.dll を入手することができます。

それ以外の方法だと、SQLCallStackResolver にも含まれています。(SQLCallStackResolver もコールスタックの解決に使用しているため)

Windows SDK をインストールすることができない場合は、https://github.com/microsoft/SQLCallStackResolver/releases から SQLCallStackResolver のアセットの zip をダウンロードして dbghelp.dll を入手してもよいのではないでしょうか。

Synbol path はデフォルトでも大丈夫な気がしないでもないですが、私は、「SRV*c:\symbols*http://msdl.microsoft.com/download/symbols」で C:\symbols にシンボルをダウンロードするようにしています。

私の環境では次のように設定しています。

image

これで両ツールからスレッドのコールスタックを解決することができるようになります。

私の場合は、SQL Server の動作確認でコールスタックの確認を行うことがあるのですが、Windbg を使用しなくても、検証環境でカジュアルに確認できる方法を知っていると、動作を把握するのにとても便利ではないでしょうか。

Share

Written by Masayuki.Ozawa

5月 19th, 2022 at 9:27 am

Posted in 未分類

Tagged with

Leave a Reply