シンボルファイル(.pdb)をデバッグ前にダウンロードする


Visual Studioでデバッグする際、シンボルファイルのダウンロードで待たされる時があります。(特にWindows Update後)

事前にシンボルファイルをダウンロードしておけば、待ち時間を減らすことができます。

SymChkコマンドを使えばコマンドラインからシンボルファイルをダウンロードすることができます。

SymChkコマンドはWindows Software Development Kitに含まれてるので、デバッグするPCにはインストールされているかと思います。

ダウンロード対象は、基本的に下記のオプションを指定することになります。

  • 実行中のプロセス名指定(例:/ie notepad.exe または /ip 1000)
  • ファイルまたはディレクトリパス指定(例:/ie C:\Windows\system32\*.dll)
  • テキストファイル(例:/it TextFileList.txt)

事前にダウンロードするので、なるべく多くのシンボルファイルをダウンロードしておきたいですが、ワイルドカードですべて取得しようとすると使用する可能性が低いファイルも含まれ、大量にダウンロードすることになるため、サーバー負荷やディスク容量的に嬉しくありません。

そこで、実行中のexplorer.exeを指定することで、常用するDLLは大体カバーできます。

(ただし、WOW64のDLLは読み込まれないので、この記事の方法ではダウンロードされません。)

設定

タスクスケジューラーにタスクを追加します。
c:\symbolsは環境に合わせて変更する必要があります。

  • 全般
    • タスクの実行時に使うユーザーアカウント: ユーザーがログオンしているときのみ実行する
  • トリガー
    • タスクの開始: ログオン時
    • (必要に応じて)遅延時間を指定する: 15分間
  • 操作
    • プログラム/スクリプト: "C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\symchk.exe"
    • 引数の追加: /ie explorer.exe /s srv*c:\symbols*https://msdl.microsoft.com/download/symbols

タスク内でUIセッションにアクセスすることになるため、ログオンしている時だけ実行するようにします。