PDBファイルとは何ですか?ソリューションを再構築するときに、それをリリースフォルダーから除外するにはどうすればよいですか?
PDBファイルとは何ですか?ソリューションを再構築するときに、それをリリースフォルダーから除外するにはどうすればよいですか?
回答:
PDBファイルには、デバッガーが操作するための情報が含まれています。いずれにしても、デバッグビルドよりもリリースビルドの方が情報が少なくなります。ただし、まったく生成しない場合は、プロジェクトのビルドプロパティに移動し、リリース構成を選択して、[詳細...]をクリックし、[デバッグ情報]で[なし]を選択します。
私はもともと「自分のマシンにPDBファイルをデプロイする必要があるのですか?」と自問し、この投稿を読んだ後、ファイルを除外することにしました。
今日まで、問題を含むメッセージボックスException.StackTrace
にファイルと行番号の情報が欠落している理由を解明しようとしたところ、例外のトラブルシューティングに必要でした。私はこの投稿をもう一度読んで、情報の重要なナゲットを見つけました。アプリを実行するためにPDBは必要ありませんが、ファイルと行番号がStackTrace
文字列に存在する必要があるということです。PDBファイルを実行可能フォルダーに含めましたが、今ではすべて問題ありません。
accepted answer
ここでは触れられていない、覚えておくべき非常に重要な部分です。
PDBはP rogram D ata B aseの略です。名前が示すように、これは、プログラムをデバッグモードで実行するために必要な情報を維持するためのリポジトリ(データベースなどの永続的なストレージ)です。これには、(Visual Studioで)コードをデバッグするときに必要な多くの重要な関連情報が含まれています。
これが、*.pdb
デバッグフォルダーからファイルを削除した場合にVisual Studioがブレークポイントに到達できないことがよくある理由です。Visual Studioデバッガーは、ファイルを使用して、スタックトレースで例外が発生したコードファイルの正確な行番号を通知することもでき*.pdb
ます。したがって、事実上、pdbファイルは、プログラムのデバッグ中に開発者に恩恵をもたらします。
通常、*.pdb
ファイルの生成を除外することはお勧めしません。本番リリースの観点からは、pdbファイルを作成する必要がありますが、製品インストーラーで顧客サイトに出荷しないでください。必要に応じて、生成されたすべてのPDBファイルを、将来使用または参照できる場所からシンボルサーバーに保存します。特に、プロセスクラッシュなどの問題をデバッグする場合。クラッシュダンプファイルの分析を開始すると*.pdb
、ビルドプロセス中に作成された元のファイルが保持されない場合、Visual Studioはクラッシュの原因となっている正確なコード行を作成できません。
*.pdb
すべてのリリースでファイルの生成を完全に無効にする場合は、プロジェクトのプロパティに移動します-> [ビルド]タブ->ボタンをクリックしAdvancedます-> [ none
デバッグ情報]ドロップダウンボックスから選択-> OK下のスナップショットに示すように押します。
注:この設定は、「デバッグ」と「リリース」のビルド構成では別々に行う必要があります。
PDBファイルは、デバッガが使用する情報が含まれています。アプリケーションを実行する必要はなく、リリースされたバージョンに含める必要もありません。
Visual Studioでpdbファイルが作成されないようにすることができます。コマンドラインまたはスクリプトからビルドする場合は、/Debug
スイッチを省略します。
プログラムデバッグデータベースファイル(pdb)は、デバッグ情報を格納するためのMicrosoftによるファイル形式です。
Visual Studioまたはコマンドプロンプトを使用してプロジェクトをビルドすると、コンパイラはこれらのシンボルファイルを作成します。
Microsoftドキュメントを確認する