システム開発・Webサイト構築 プラスラス

2008/3/1 土曜日

【.NET】Visual Studio 2005/2008で.NET Frameworkのソースを見ながらステップ実行する

このエントリーを含むはてなブックマーク Yahoo!ブックマークに登録 Google ブックマーク del.icio.us

.NET Frameworkのソースコードは、Microsoftが正規に公開しており、Visual Studioのデバッガ上でソースを見ながらステップ実行することができます。

.NET Frameworkのソースコード

最新のIDEであるVisual Studio 2008のStandard以上のエディションには、サーバーから自動でソースコードをダウンロードし、デバッガ上で表示する機能があります。

Visual Studioの設定をするだけで、デバッガのステップ実行で .NET Frameworkの内部まで入っていくことができます。

また、Visual Studio 2005や、Visual Studio 2008Express Edition(無償版)でも、NET Frameworkのソースコードをあらかじめローカルのディスク上にダウンロードしておくことにより、同様のことが可能です。

(2008 Standard以上を持っている場合でも、ローカルに保存しておくとストレスなく実行できて便利です。)

以下に詳細を書きます。

Visual Studio 2008 Standard Editon以上の場合

Visual Studioのメニューバーから【ツール】-【オプション】を開きます。

Visual Studio 2008 オプション

【デバッグ】-【全般】を選びます。

「`マイ コードのみ`設定を有効にする」のチェックを外します

「ソース サーバー サポートを有効にする」のチェックを入れます

Visual Studio 2008 オプション 2

【デバッグ】-【シンボル】を選びます。

フォルダマークのアイコンをクリックし、【シンボル ファイル(pdb)の場所】に

http://referencesource.microsoft.com/symbols と入力します。

シンボル サーバーからシンボルをキャッシュするディレクトリに、キャッシュを保存したい任意のディレクトリを入力します。

【シンボルが手動で読み込まれるときのみ上記の場所を探す】にチェックを入れます。

この状態で、【OK】ボタンをクリックします。警告が出た場合は、再度【OK】をクリックします。

これで、準備完了です。

ステップ実行してみる

適当なプロジェクトを作成して試してみましょう。

.NET Frameworkのソースを覗きたいところにカーソルを合わせて、メニューバーの【デバッグ】-【ブレークポイントの作成/解除】(F9)で、ブレークポイントを作成し、デバッグ実行してみましょう。

デバッグしてみる

メニューバーの【デバッグ】-【デバッグ開始】で実行します。

モジュールウィンドウ

ブレークポイントで止まったら、モジュールウィンドウ上の、自分の見たいDLLを右クリックします。

(モジュールウィンドウが表示されていない場合は、メニューバーの【デバッグ】-【ウィンドウ】-【モジュール】で表示させます。)

コンテキストメニューから【シンボルの読み込み】をクリックします。

これで、シンボルの状態が、「シンボルが読み込まれました。」に変わります。

ステップイン

【デバッグ】-【ステップ イン】(F11)で、ステップ実行を続けると、.NET Framework内のソースコードにまで進んでいきます。

(途中で使用許諾ウィンドウが表示された場合は、内容に従ってください。)

KB944899へのHotfix

ところで、Visual Studio 2008のこの機能には、KB944899へのHotfixが出ています。

KB944899のドキュメント:
FIX: Visual Studio 2008 performance decreases when you step through source code that you downloaded from Reference Source Server(英語)

FIX: ステップ 参照 ソース サーバー からダウンロードしたソース コードでインするとき、 Visual Studio 2008 パフォーマンスが低下します。(機械翻訳)

ブレークポイントに達するたびにソースのダウンロードを行ってしまいデバッグ時のパフォーマンスが悪いことへのFixのようです。

影響が深刻ではない場合は サービスパックを待つようにとの注意書きがありますが、修正プログラムのダウンロードは以下のページからできます。

Microsoftサイト内のダウンロードページ

追記:試してみたところ、このFIXは日本語版のVisual Studio 2008には、「このソフトウェア更新の対象製品はこのコンピュータにインストールされていません。[キャンセル] をクリックして、セットアップを終了してください。」というメッセージが表示されて、うまくインストールできないようです。
置き換えられるDLLのタイムスタンプ的には元のファイルが古いと思うのですが、現状で問題なさそうなら放っておいた方が無難だと思います。

Visual Studio 2005、Visual Studio 2008 Express Editionの場合

Visual Studio 2005や、Visual Studio 2008Express Editionの場合は、.NET Frameworkのソースコードをあらかじめローカルのディスク上にダウンロードしておき、参照させます。

ローカルのディスク上にダウンロードするには、.NET Mass Downloaderというフリーウェアを使用します。

.NET Mass Downloaderのサイト
.NET Mass Downloaderダウンロードページ

.NET Mass Downloaderは、コンソールアプリケーションです。コマンドプロンプトで実行します。

NET Framework 2.0のソースをダウンロードするには、

NetMassDownloader -directory C:\Windows\Microsoft.NET\Framework\v2.0.50727 -output C:\ReferenceSource

のようにタイプします。

C:\Windows\Microsoft.NET\Framework\v2.0.50727 は、.NET Framework 2.0のフォルダで、C:\ReferenceSourceが自分のパソコンのダウンロード先のフォルダです。

パスは自分の環境に合わせて読み替えてください。

コマンドプロンプトで実行

実行するとダウンロードが始まります。使用許諾のウィンドウが表示された場合は、内容に従ってください。

Visual Studio 2008がすでに入った環境の場合は、シンボルキャッシュの設定を一度消してください。以下のように設定しないと、うまく動きません。

*すでにVisual Studio 2008がインストールされている場合

Visual Studioを起動して、メニューバーの【ツール】-【オプション】をクリックします。

【デバッグ】-【シンボル】を選びます。

フォルダマークのアイコンをクリックし、【シンボル ファイル(pdb)の場所】に何かあれば、チェックを外します。

【シンボル サーバーからシンボルをキャッシュするディレクトリ】欄に何か入っていれば消します。

Visual Studioの設定

メニューバーの【ツール】-【オプション】を開きます。

【デバッグ】-【全般】を選びます。

Visual Studio 2005 オプション

「`マイ コードのみ`設定を有効にする」のチェックを外します

「元のバージョンと完全に一致するソース ファイルを必要とする」のチェックを外します

Visual Studio 2005 オプション

【デバッグ】-【シンボル】を選びます。

「シンボルファイル(pdp)の場所」に、.NET MASS Downloaderでソースを取得したフォルダを入力します。

【OK】ボタンをクリックします。

最後に、ソリューションごとの設定が必要です。

新規のソリューションを作成するたびに、ソリューションエクスプロラーで、ソリューションを選択して、右クリック – プロパティ(あるいは、メニューバーの【プロジェクト】-【プロパティ】)で、プロパティウィンドウを開きます。

ソリューションのプロパティ

【デバッグソースファイル】を選択して、「ソース コードを含んでいるディレクトリ」に.NET MASS Downloaderでソースをのあるフォルダを入力します。

この状態で、デバッグ実行します。

あとの手順は、最初のVisual Studio 2008 Standard以上の場合と同じなので省きます。

追記:Express Editionをお使いの方へ
VC#2008Expressでモジュールウィンドウがない – C#、VB.NET、ASP.NET、C++/CLI、Javaで投稿された情報より補足です。

Express Editionの場合、モジュールウィンドウが省かれているため、手動でシンボルを読み込むことができません。

メニューバーの【ツール】-【オプション】を開き、【デバッグ】-【シンボル】の「シンボルが手動で読み込まれるときのみ上記の場所を探す」のチェックを外すことで、ステップインが可能になります。この設定を行ってください。

元にした記事:

Releasing the Source Code for the .NET Framework Libraries – ScottGu’s Blog(英語)

Shawn Burke’s Blog : Configuring Visual Studio to Debug .NET Framework Source Code(英語)

John Robbins’ Blog : Download All the .NET Reference Source Code at Once with Net Mass Downloader(英語)

関連図書

プログラムを作ろう!パソコン教科書 Microsoft Visual C# 2005 Express Edition入門 (マイクロソフト公式解説書) ひと目でわかるMicrosoft Visual Basic 2005アプリケーション開発入門 (マイクロソフト公式解説書) ずばりわかる!VB&C#―プログラミングの基礎はこれで万全 (日経BPパソコンベストムック)

Filed under: C#,Programming,VB.NET — Nakai @ 3:30:48

4件のコメント »

  1. VC#Express2008で.NET Frameworkの…

    VC#Express2008で.NET Frameworkのライブラリ・ソースへステップイン (more…)

    トラックバック by myugaruの色々構想中・・・! — 2008/3/12 水曜日 @ 6:46:43

  2. わざわざ手順のご修正までしてくださって本当に助かります。
    無言でトラックバックなどしてお呼びたてしてしまったのではないかととても恐縮しております。
    このように素晴らしい情報を調査して公開されるナカイさまのような方が多くいて私の様なGoogle先生頼りっぱなし人間には頭が下がるばかりです。
    ナカイ様ほんとうにありがとうございました。
    失礼な長文失礼いたしました。

    コメント by myugaru — 2008/3/12 水曜日 @ 20:38:54

  3. myugaruさん、はじめまして。
    いえいえ、中途半端な情報を出してしまいお手数をおかけしました。
    更新の遅いサイトですが、よろしくお願いします。

    コメント by Nakai — 2008/3/12 水曜日 @ 21:32:11

  4. .NET Frameworkのソースコードを見たい…

    昨年末くらいにあのMicrosoftが.NET Frameworkのソースコードを公開するとかいう記事があちこちのニュースサイトに上がってました。
    で、今年に入って本当に公開されたようなので、ちょっ…

    トラックバック by 3流プログラマのメモ書き — 2008/4/14 月曜日 @ 14:19:45

この投稿へのコメントの RSS フィード。 TrackBack URL

コメントする

HTML convert time: 1.191 sec. Powered by WordPress