1 つのファイルのソース コードのみを使用して .NET アプリをデバッグできますか?

StackOverflow https://stackoverflow.com/questions/107179

質問

Visual Studio でアプリケーションをデバッグしたいのですが、1 クラスのソース コードしかありません。そのファイル内の 1 つの関数をステップ実行するだけですが、何を実行する必要があるのか​​わかりません。通常は次のような手順になると思います。

  1. VS でファイルを開く
  2. 「シンボル」(.PDB ファイル) をロードします。
  3. 実行中のプロセスにアタッチします

#1 と #3 を実行する方法は知っていますが、.PDB ファイルを使用せずに #2 を実行する方法がわかりません。これを機能させるために .PDB ファイルを生成することは可能ですか?ありがとう!

役に立ちましたか?

解決

*.pdb ファイルが必要です (投稿のステップ 2) これらのファイルには、ソース コードとコンパイルされたアセンブリ間のマッピングが含まれています。したがって、あなたのステップは正しいです。ソースファイルに元のファイルとの差異がある場合は、BP のプロパティダイアログで「ソースコードが元のバージョンと異なることを許可する」にチェックを入れてください。

Visual Studio のブレークポイントとトレースポイント

PDB ファイルがない場合は、次を使用してプロジェクトを逆コンパイルしてみてください。 Reflector.FileDisassembler または リフレクター用の FileGenerator. 。これらのファイルを再コンパイルして PDB を取得できます

こちらもご覧ください デブレクター - Reflector のデバッグ アドイン。

他のヒント

デバッグしようとしているアプリケーションに属するシンボル ファイル (.PDB) ファイルが必要です。

MSDN:PDB ファイル

Visual Studio デバッガーは、EXE または DLL ファイル内の PDB へのパスを使用して project.pdb ファイルを見つけます。デバッガーがその場所で PDB ファイルを見つけられない場合、またはパスが無効な場合 (プロジェクトが別のコンピューターに移動された場合など)、デバッガーは、EXE とその後に [オプション] ダイアログ ボックスで指定されたシンボル パスを含むパスを検索します。 。このパスは通常、シンボル ノードのデバッグ フォルダーです。デバッガーは、デバッグ中のバイナリと一致しない PDB をロードしません。

シンボル ファイルは .pdb ファイルです。これを実行可能ファイルの隣に配置すると、シンボルがロードされ、ソース ファイルが参照されます。

あなたの場合、「シンボル」は、デバッグするアセンブリの pdb ファイルを意味します。デバッガーはすべてのソースを持っている必要はなく、一致する pdb を持っていることだけを必要とします。PDB はアセンブリのビルド中に生成されますが、残念ながら事後に作成することはできません。pdb がない場合は、ソース コードよりも低いレベルでデバッグする必要があります。

マシン上でアセンブリを構築した場合は、アタッチ時にシンボルが表示されます。その場合は、ソースにブレークポイントを設定し、そのコードを実行するために必要な操作を行うだけで、ブレークポイントに到達します。

ビルドしていない場合は、アセンブリの PDB を見つける必要があります。Debug/Windows/Modules の下にあるモジュール ウィンドウは、プロセスに読み込まれたアセンブリとバージョン情報、タイムスタンプを表示するのに役立ちます。

この情報は、アセンブリに複数のバージョンが存在する可能性がある場合 (夜間ビルドを多数保持する場合や、継続的統合ビルドからの最後の 20 程度のバージョンを保持する場合など) に必要になります。

それが役立つことを願っています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top