開発ドライブ(Dev Drive) #4 デバッグ シンボル キャッシュ

Microsoft Build 2023で発表があった開発ドライブ (Dev Drive)が使えるようになりました。さっそく、開発ドライブを作成・設定しました。今回も、開発ドライブを作成した後の各種設定(シンボル キャッシュ フォルダー)について説明します。

開発ドライブ (Dev Drive)とは

開発ドライブ (Dev Drive)の説明、要件、作成方法などは以前の投稿で説明しましたので、説明は省略します。以前の投稿を参照してください。

開発ドライブの作成後の設定

今回も開発ドライブを作成した後の、開発環境の設定について説明します。

開発ドライブは、レポジトリ(ソースコード)の保存先やパッケージキャッシュの保存先の利用が想定されています。しかし、開発ドライブを作成しただけでは、これらのものが自動的に開発ドライブに移動することはありません。

そのため、開発ドライブを作成した後は、

  • ソースコードを移動
  • ソースコードの置き場所の既定値の設定の変更
  • パッケージ キャッシュの保存先の変更

などの作業をする必要があります。

以降は、以下の前提で説明をします。

  • 開発ドライブ作成前の既存のレポジトリの保存先: C:\Repos\
  • 開発ドライブ作成前の既存のパッケージ キャッシュの保存先: それぞれのパッケージキャッシュの既定のフォルダー
  • 作成した開発ドライブのドライブレター: Dドライブ
  • 開発ドライブ上の新たなレポジトリの保存先: D:\Repos\
  • 開発ドライブ上の新たなパッケージ キャッシュの保存先: D:\Packages\
    • D:\Packages\nuget\
  • 開発ドライブ上の新たなシンボル キャッシュ フォルダー: D:\SymbolCache\

デバッグ シンボル キャッシュ

アプリの開発をするときには、必ずデバッグもします。ネイティブ系のデバッグのときは、効率を上げるためには、シンボルファイルが必須です。

Windows のWIN32 APIなどのシンボルファイルは、マイクロソフトのシンボル サーバーで公開されており、ダウンロードすることでデバッグ時に使用することができます。しかし、デバッグ時に毎回ダウンロードしていると、ダウンロードに時間がかかり、デバッグの開始に時間がかかってしまいます。そのため、一度ダウンロードしたシンボルファイルは、ローカルのストレージにキャッシュする仕組みがあります。

その、ダウンロードしたシンボルファイルのキャッシュを保存するフォルダーをシンボル キャッシュ フォルダーといいます。

開発ドライブは、シンボル キャッシュ フォルダーにも適していると考えます。

そこで、シンボル キャッシュ フォルダーを開発ドライブに移動します。

シンボル キャッシュ フォルダーの既定値

WinDbg と Visual Studio でシンボル キャッシュ フォルダーの既定値は異なります。

開発環境既定の シンボル キャッシュ フォルダー
Visual Studio%TEMP%\SymbolCache
(C:\Users\{UserName}\AppData\Local\Temp\SymbolCache)
WinDbg%PROGRAMDATA%\Dbg\sym
(C:\ProgramData\Dbg\sym)

上記のように、既定のシンボル キャッシュ フォルダーは、Visual Studioでは各ユーザーのTempフォルダーに作成され、WinDbg ではユーザー共通のデータフォルダーに作成されます。

なお、Visual Studioの既定のフォルダーは各ユーザーごとに異なります。しかし、シンボル ファイルは、ユーザーごとに内容が異なることはなく、同じ実行ファイルに対応するシンボル ファイルは全く同じです。そのため、シンボル キャッシュ フォルダーをユーザーごとに分ける必要はありません。

シンボル キャッシュ フォルダーの作成

この二つのシンボル キャッシュ フォルダーを、開発ドライブに移設します。既定値では別のフォルダーになっていましたが、開発ドライブに移設するときは、同じフォルダーを使うように設定します。

ここでは、開発ドライブ上のシンボル キャッシュ フォルダーは、D:\SymbolCache\ とします。

このフォルダーを、開発ドライブ上に作成します。

既存のシンボル ファイルを移動

ダウンロード済みのシンボル ファイルを再利用せず、次のデバッグのタイミングで再度ダウンロードして利用する場合には、既存のシンボルファイルを開発ドライブ上のシンボル キャッシュ フォルダーにコピーする必要はありません。

しかし、既存のシンボル キャッシュ フォルダーにダウンロード済みのシンボルファイルは、開発ドライブにコピーして再利用できます。再利用することにより、次のデバッグ時にダウンロードされるシンボルファイルの数を減らすことができます。

複数のシンボル キャッシュ フォルダーから開発ドライブ上のシンボルキャッシュフォルダーにコピーする場合は、ファイル名が重複するものがあるかもしれません。その場合、内容が同じファイルであるので「上書き」でも、「スキップ」のどちらでもよいです。

開発環境のシンボル キャッシュフォルダーの設定変更

シンボル キャッシュ フォルダーの場所をCドライブから開発ドライブ(Dドライブ)に移動したら、開発ツールのシンボル キャッシュ フォルダーの場所も開発ドライブ(Dドライブ)に変更します。

これにより、新しくダウンロードされるシンボルファイルの場所を、開発ドライブにすることができます。

ここでは、デバッグ時に使用する代表的なアプリであるVisual StudioとWinDbgの設定変更について説明します。

Visual Studioのシンボル キャッシュフォルダーの設定変更

Visual Studioの既定のシンボル キャッシュ フォルダーの設定を変更するときは、まず、すべてのVisual Studioを閉じます。そして、設定を変更したいVisual Studioを一つだけ起動します。

複数のVisual Studioを開いた状態で設定を変更すると、最後のVisual Studioを閉じたときの設定が保存されることになります。閉じる順番を間違えたとき、次回のVisual Studioの起動したときに設定が反映されない可能性があるからです。

また、この設定はVisual Studioのバージョンごとに設定する必要があります。もし、Visual Studio 2019とVisual Studio 2022の両方を使っている場合、それぞれのバージョンで同じ設定をする必要があります。バージョンが異なっていも設定の手順は同じです。

設定の変更は、メニューの「ツール → オプション」から行います。

Visual Studioのオプション設定メニュー

既定の場所を変更するには「オプション設定」の「デバッグ」→「シンボル」→「このディレクトリにシンボルをキャッシュ」の設定を変更します。

オプション設定 ー デバッグ ー シンボルの「このディレクトリにシンボルをキャッシュ」

Visual Studioをインストールしてから一度もこの値を変更していなければ、この値はCドライブのユーザーのTempフォルダーの %TEMP%\SymbolCache フォルダー(C:\Users\(username)\AppData\Local\Temp\SymbolCache\)になっています。

これを開発ドライブ(Dドライブ)のSymbolCacheフォルダー(D:\SymbolCache\)に変更します。

設定が完了したら、Visual Studioをいったん終了します。終了することにより、変更した設定が設定ファイルに保存され、次回のVisual Studioの起動時にも反映されます。

前述しましたが、Visual Studioの複数のバージョン(2019と2022など)を利用している場合は、各バージョンごとに同様の設定をします。

WinDbg のシンボル キャッシュフォルダーの設定変更

WinDbg の既定のシンボル キャッシュ フォルダーの設定を変更するときは、まず、すべてのWinDbgを閉じます。そして、設定を変更したいWinDbgを一つだけ起動します。

複数のWinDbgを開いた状態で設定を変更すると、どのWinDbgの設定がファイルとして保存されるかわからなくなります。

設定の変更は、リボン メニューの「Home → Settings」から行います。

WinDbgのオプション設定メニュー

既定の場所を変更するには「Settings」の「Debugging settings」→「Debugging paths」→「Default symbol path」の設定を変更します。

オプション設定(Settings) ー デバッグ設定(Debugging settings)のシンボルパス(Symbol path)設定 (変更前)

「Default symbol path」のすぐ下に「Default cache」という項目がありますが、使いません。

この項目もシンボル キャッシュ フォルダーを指定するものです。しかし、ここに指定したフォルダーがシンボル キャッシュ フォルダーとしてそのまま使われるのではなく、sym というサブフォルダーがシンボル キャッシュ フォルダーになります。

たとえば、「Default cache」にD:\SymbolCache\を指定した場合に、実際に利用されるシンボルキャッシュフォルダーは、D:\SymbolCache\sym\となります。

Visual StudioとWinDbgとでシンボル キャッシュ フォルダーを共用したい場合に同じフォルダーが使われないことになります。

そのため、シンボル キャッシュ フォルダーを直接指定できる「Default symbol path」項目を使います。

オプション設定(Settings) ー デバッグ設定(Debugging settings)のシンボルパス(Symbol path)設定 (変更後)

Visual Studioをインストールしてから一度もこの値を変更していなければ、この値は srv* になっています。

この先頭に開発ドライブ(Dドライブ)のSymbolCacheフォルダー(D:\SymbolCache\)を追加します。シンボル キャッシュ フォルダーとして追加するときは以下の形式で追加します。

cache*(シンボル キャッシュ フォルダーのパス)*

パスがD:\SymbolCache\の場合は以下のようになります。

cache*D:\SymbolCache\*

これにより、これ以降に設定してあるシンボルファイル(上記の例ではsrv*)は、D:\SymbolCache\にキャッシュされます。設定が既定値のままであったのであれば、変更後は以下のようになります。

cache*D:\SymbolCache\*
srv*

設定が完了したら、WinDbg をいったん終了します。終了することにより、設定がファイルに保存され、次回のWinDbgの起動時にも反映されます。


今回の投稿では、シンボル キャッシュ フォルダーを開発ドライブに移設する方法を説明しました。

コメントを残す