2014年10月19日日曜日

[Sysinternals関連] 環境構築

WindbgやXperfなどのツール群を使用する際に必要となる手順のメモ書き。
(解析環境が変わるたびに、シンボルサーバーのパスが分からなくなったりするので。。)

★解析ツール(自環境でのインストール先のメモ書き)
Microsoft SDK (WinDbg, Gflags, UMDH, Xperf, WPA, etc)
・個別にアプリをインストールする事も出来るが全部入れちゃう。

・すべての Sysinternals ユーティリティをまとめたパッケージ。
・いずれも単独実行可能。インストーラは無い。「C:\Program Files\Sysinternals\」へ一式配置。

CLR Profiler

PerfMonitor

・単独実行可能。インストーラは無い。「C:\Program Files\Sysinternals\」へ配置。

PerfView

・単独実行可能。インストーラは無い。「C:\Program Files\Sysinternals\」へ配置。


★システム環境変数
○シンボルファイルへのパス
変数名:「_NT_SYMBOL_PATH」
変数値:「C:\MySymbols;srv*C:\MSSymbols*http://msdl.microsoft.com/download/symbols
・区切り文字は「;」。
・探索順は先頭から。
・「C:\MySymbols」は自前のシステムのシンボルファイルが置かれている場所のパス。
 ※基本的には実行ファイルのインストール先にシンボルも存在するので適宜変更する。
・「C:\MSSymbols」はローカルシンボルキャッシュのパス。
 ※これを指定しないと毎度サーバーから必要なシンボルがダウンロードされる。
 ※スタンドアロンの環境で解析する際には、
   ダウンロード済みの「C:\MSSymbols」を丸ごと移行すれば良い。
   ただし、OSのバージョンが異なる場合はMicrosoftのHPから取得してくる必要がある。

○シンボル情報のキャッシュを保存するパス
変数名:「_NT_SYMCACHE_PATH」
変数値:「C:\SymCache」
・WPA(Windows Performance Analyzer)がシンボル情報のキャッシュの保存先として利用する。

○PATH
変数名:「Path」
変数値:「適宜追加」
・コマンドラインから実行ファイル名で解析ツールを開きたいので実行ファイルのパスを適宜追加。
・「C:\Program Files\Sysinternals\」 ※自分はいつもここに一式配置。
・「C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\
・「C:\Program Files (x86)\Windows Kits\8.1\Debuggers\x86\

○BSTR cachingの無効化
変数名:「OANOCACHE」
変数値:「1」
・UMDHでメモリリークの解析を行う前に実施。
・これによりBSTR起因のメモリリーク誤検出を防ぐ。


★レジストリ
○カーネルコードページのページアウトを無効化
キー:「HKEY_LOCALMACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\DisablePagingExecutive
設定値:DWORD 「0x1」
・Xperfでカーネルトレースをキャプチャする時だけ事前に設定しておく。
・64ビット版のOSのみ設定が必要。設定したらPCを再起動。
・キャプチャが終わったら設定を元に戻しておく。
 ※無効化したままだとシステムのワーキングセットが数MByteずつ増えてしまう可能性あり。


[参考]
・「Loading Symbols

0 件のコメント:

コメントを投稿