.NET Framework の基本クラスに対してソースレベルデバッグを行う方法 (オフライン編)

.NET Framework の Base Class Library (BCL) の一部*1ソースコードが公開されていて*2Visual Studio 2008 のソースレベルデバッグに利用することができます.
公開されているソースコードの入手方法としては Microsoft のソースサーバを利用するものが有名ですが,ここでは,アーカイブされたソースコードとシンボルファイルをまとめてダウンロードする方法を紹介します.この方法であれば,オフラインでも安心してソースレベルデバッグができますし,公開されているソースコードから興味がある部分を grep で検索することも可能です.
クリーンインストール状態の Visual Studio 2008 SP1 から以下の手順で設定を行います.

  1. Microsoft Reference Source Code Center の .NET Framework に関するソースコードダウンロードページ から,以下の 3 ファイルをダウンロード
  2. 上記 3 ファイルをインストール.Visual Studio 使用時の権限でリードアクセス可能なフォルダであれば,インストール先はどこでも場所でよい.ここでは "C:\ReferenceSource" にインストールするものとする.
  3. Visual Studio 2008 SP1 を起動し,Tool → Options を選択.
    1. Debugging → General を,以下のように設定.
      • チェックを外すもの
        • Enable Just My Code (Managed only)
        • Require source files to exactly match the original version
        • Enable .NET Framework source stepping
      • チェックを入れるもの
        • Enable source server support
    2. Debugging → Symbols を選択し,Symbol file (.pdb) locations: に "C:\ReferenceSource\Symbols" と設定.ここはインストールしたフォルダにあわせて変更する.



以上で設定は終わりです.これで BCL の中にステップインできるようになります.

おすすめ巡回先

Reference Source Code Center に関する最新情報が欲しい方におすすめの情報源.

*1:現在公開されている範囲に,LINQ や ReaderWriterLockSlim といったクラスが含まれていません.一方で WPF が利用している MIL (Media Integration Layer) のエクスポート関数や定数一覧が記されたレアなソースは入っていたりします.なかなかおもしろいことになっています.

*2:ライセンス形態は [http://referencesource.microsoft.com/referencesourcelicensing.aspx:title=Microsoft Reference Source License (MS-RSL)] と書かれていますが,"The source code for the .NET Framework libraries are released under a modified Microsoft Reference Source License." の "modified" が微妙に気になります.