dotPeek をシンボルサーバーとして使用する
dotPeek はシンボルサーバーとして機能することができます。つまり、コンパイルされたアセンブリをデバッグするために必要な情報をデバッガーに提供できます。
Microsoft Symbol Server(英語) などの従来のシンボルサーバーとは対照的に、dotPeek はシンボルファイルを保存せず、要求されたアセンブリの PDB およびソースファイルを生成し、デバッガーに返します。
dotPeek Symbol Server を実行する
ツールバーのシンボルサーバーの起動 / 停止 をクリックします。
メインメニューの
を選択します。
dotPeek シンボルサーバーの最初の起動時に、シンボルファイルを生成するアセンブリを選択するように求められます。設定オプションについては、dotPeek シンボルサーバーの設定を参照してください。
dotPeek シンボルサーバーが開始されるとすぐに、対応するアイコンがステータスバーに表示されます。カーソルを合わせると、そのアドレスと現在の構成を確認できます。
dotPeek シンボルサーバーを使用するには、デバッガー設定でそのアドレスを指定します。Microsoft Visual Studio では、構成は次のとおりです。
dotPeek シンボルサーバーを操作するために Visual Studio をセットアップする
Visual Studio メニューで、
を選択します。新しい場所を追加をクリックして、次のアドレスを指定します: http://localhost:33417/。(ポート番号は、dotPeek オプションの ページで構成できます。)
Visual Studio オプションで、デバッグ | 一般ページに移動し、マイコードだけを有効にするチェックボックスをオフにします。
dotPeek Symbol Server の構成
dotPeek シンボルサーバーを使用すると、シンボルファイルを生成する正確なアセンブリを選択できます。正しい構成では、望ましくないシステムアセンブリや興味のないアセンブリへのステップアップを防ぐことができます。
メインメニューから
を選択し、左側の を選択します。ラジオボタンを使用して、シンボルファイル(.pdb)を生成するオプションの 1 つを選択します。最初の 4 つの選択肢の意味は明らかです。最後の方法では、最も柔軟性があります。このオプションを選択した後は、デバッグに必要なアセンブリだけを選択して、アセンブリエクスプローラーで開くことができます。
必要に応じて、dotPeek シンボルサーバーに使用されるポート番号を変更することができます。
OK をクリックします。
考えられる問題と解決策
dotPeek シンボルサーバーで問題が発生した場合、最初にできることは、プロジェクト /PDB 生成ステータスウィンドウ (dotPeek のメニューの ) を開くことです。
ここでは、すべてのシンボルサーバータスクと、PDB を生成するおよびプロジェクトを生成するコマンドの結果を確認できます。一部の PDB がデバッガーによって dotPeek シンボルサーバーから要求されたが、生成されなかった場合、このウィンドウに対応するエントリとエラーメッセージが表示されます。
ほとんどの場合、ターゲットアセンブリが見つからないと問題が発生します。これを修正するには、アセンブリエクスプローラーでアセンブリを開くことができます。アセンブリの場所がわからない場合は、Visual Studio がデバッグモードのときに知ることができます - モジュールウィンドウ( )を開いてパス列を確認してください。
64 ビット Windows で dotPeek を実行している場合は、64 ビットバージョンの dotPeek を実行していることを確認してください(インストールディレクトリ %LOCALAPPDATA%\JetBrains\Installations\dotPeek[N] には dotPeek32.exe と dotPeek64.exe の 2 つの実行可能ファイルがあります)。
要求されたアセンブリがプロジェクト /PDB 生成ステータスウィンドウに表示されない場合は、デバッガーが対応するシンボルファイルをすでに見つけており、dotPeek から要求していないことを意味します。シンボルファイルが正しく、ソースコードが利用できる場合は、問題はなく、dotPeek を使用せずにアセンブリをデバッグできます。そうでない場合は、次のことを試してください。
問題のある PDB ファイルを削除または名前を変更します。Visual Studio がデバッグモードになっているときに、各アセンブリに対して実際の PDB ファイルの場所(存在する場合)を見つけることができます。モジュールウィンドウ( )を開き、シンボルファイル列を確認します。
PDB ファイルが別のシンボルサーバーから受信された場合は、このサーバーを無効にするか、シンボルサーバーのリスト(Visual Studio のオプションの
)で dotPeek シンボルサーバーを移動します。
最適化されたアセンブリをデバッグする場合、一部のデバッガー関数は使用できません。たとえば、シンボルファイルが正しい場合でも、ローカル変数の値は表示されません。最適化を無効にすることをお勧めします。
Visual Studio がデバッグモードのときにアセンブリが最適化されているかどうかを確認します。モジュールウィンドウ( )を開き、最適化列を確認します。
Visual Studio オプション(モジュールのロード時に JIT 最適化を抑制するチェックボックスを選択します。
)ですべての NGEN(pre-JIT)イメージ(*.ni.dll)の使用を無効にするには、環境変数
COMPLUS_ZapDisable=1
を設定できます。例と詳細については、次の記事を参照してください。
関連ページ:
アセンブリを開閉する
dotPeek を使用すると、.NET アセンブリを開いて、その内容を逆コンパイルして探索できます。アセンブリは逆コンパイルして C# コード、IL コードとして表示できます。また、PDB ファイルとシンボルサーバーを使用してローカルまたはリモートの場所から元のソースコードをフェッチすることもできます。詳細については、コンパイルされたコードの表示オプションを参照してください。サポートされているアセンブリファイルタイプは次のとおりです。ライブラリ (.dll)、実行可能ファイル (.exe)、Wi...
PDB ファイルを生成する
デバッガー以外の場所でシンボルファイルが必要な場合、dotPeek は、.NET アセンブリ用の(ソースファイルと共に)PDB ファイルを生成するコマンドを提供します。シンボルファイルを生成するとき、dotPeek は Visual Studio のシンボルキャッシュと同じディレクトリ構造を作成します。Visual Studio のシンボルキャッシュディレクトリを出力フォルダーとして設定すると、生成されたすべてのシンボルが自動的に Visual Studio デバッガーで使用できるようになります...
アセンブリをプロジェクトにエクスポート
アセンブリを探索する究極のステップは、アセンブリを Visual Studio プロジェクトにエクスポートして、ソースコードを参照してビルドおよびデバッグできるようにすることです。アセンブリで使用された元のプログラミング言語とは無関係に、エクスポートされたプロジェクトは C# を使用して作成されます。アセンブリを Visual Studio プロジェクトにエクスポートするアセンブリエクスプローラーウィンドウでアセンブリを選択し、ツールバーのプロジェクトにエクスポートをクリックするか、コンテキスト...