tmori3y2のブログ

主にWindowsのプログラムなど

マイコード以外にステップインする方法

マイコードは、主に自分の開発しているデバッグ版のアセンブリを指しており、デフォルトではNuGet Packageや.NET Frameworkアセンブリにステップインすることはありません。

.pdbファイルが入手できるアセンブリやソースが入手できるもの、.NET Frameworkの公開されているソースにステップインするためには、以下の設定を行います。

Configure Visual Studio 2013 for debugging .NET framework

ソースがない場合に、アセンブリコードにステップインするためには、

「Show disassembly if source is not available」

にチェックを入れます。

実際にやってみると、最初はソースが見つからないケースでも、何度かやっているとステップインできるケースもありました。

NuGet Packageなどの.pdbファイルをダウンロードする場合は、以下の設定を行いますが、ソースが入手できる場合は、そちらが優先されているように思いました。

その場合は、デフォルトでは指定したアセンブリ以外のシンボルはロードしない設定にしておくと良いです。

f:id:tmori3y2:20160213001540p:plain

なお、自家製のローカルなNuGet Packageでは、.pdbファイルをリリース版に含めてしまうのもありです。

  <files>
    <file src="bin\Release\$id$.pdb" target="lib\portable-net45+win+wpa81+wp80" />
  </files>

(プロジェクト出力をNuGet PackageにしているPCLの場合)

除外したアセンブリ以外のシンボルを全てロードする設定にしていると、Visual Studio起動時やプロジェクトロード時に時間がかかる他、デバッグ時にも時間がかかるので、通常は指定したアセンブリ以外のシンボルはロードしない設定にしましょう。

(GeneralでMy Codeにチェックを入れても良いですが、.NET Frameworkのソースが無効になるので・・・)

残念だったのは、Rxの.pdbのダウンロードが出来ているのにステップイン出来なかったこと・・・かな?

参考

Just My Code

シンボル (.pdb) ファイル、ソース ファイル、およびバイナリ ファイルの検索

Reference Source

Introducing the symbol and source server project