2008-09-16 15 views
41

PDBファイルを使用していると聞いたことがありますが、クラッシュが発生した場所を診断するのに役立ちます。
マイ基本理解が、あなたは、Visual Studioにソースファイル、PDBファイルと(ワトソン博士から?)クラッシュ情報を与えることである
誰かがどのようにすべての作品/何関与して説明していただけますか? (ありがとう!)PDBファイルの使用方法

+0

おかげで(私は少し長く開いた質問を残す) 私はまた、これは有用であることが分かっています http://www.codeproject.com/KB/debug/postmortemdebug_standalone1.aspx – hamishmcn

答えて

30

プロジェクトのビルド時にPDBファイルが生成されます。これらには、Visual Studioが解釈できるビルドされたバイナリに関する情報が含まれています。

プログラムがクラッシュしてクラッシュレポートが生成されると、Visual Studioはそのレポートを取得し、アプリケーションのPDBファイルを介してソースコードにリンクすることができます。 PDBファイルは、クラッシュレポートを生成した同じバイナリから構築する必要があります。

時間の経過とともに遭遇する問題がいくつかあります。

  • クラッシュレポートをデバッグしているマシンは、バイナリをビルドしたマシンと同じパスにソースを持つ必要があります。
  • リリースは、多くの場合、あなたは、誰もが元を倒す方法を知っている場合は、私はいくつかの入力のために感謝されるオブジェクトのメンバ変数

の状態を表示することができない程度の最適化を構築します。

+5

ソースファイルパスを支援する1つの方法:SUBSTを使用して、ドライブレターを特定のディレクトリにマップします。 http://technet.microsoft.com/en-us/library/bb491006.aspx – MarkJ

+0

私が見たほとんどのデバッガでは、任意のパスの置換を入力することができますが、Visual Studioでは使用できない可能性があります。決して試したことはありませんが、他の誰かがコンパイルしたプログラムをデバッグするために一般的に必要とするものの1つです。 – jakobengblom2

34

PDBファイルは、アセンブリのMSILを元のソース行にマップします。つまり、アセンブリでコンパイルされたPDBをアセンブリと同じディレクトリに配置すると、例外スタックトレースに元のソースファイル内の位置の名前と行が残ります。 PDBファイルがなければ、スタックトレースの各レベルのクラスとメソッドの名前のみが表示されます。

+3

+1:「プログラムデータベース」(PDB)に含まれている内容を詳しく説明しています。 – AMissico

12

シンボルサーバーの設定と、ソースコード管理システムへのPDBファイルのインデックス付けを調べる必要があります。私はちょうど最近、私たちの製品のためにこのプロセスを経て、とてもうまく動作します。バイナリでPDBファイルを利用できるようにすることや、ダンプファイルをデバッグする際に適切なソースコードを入手する方法について心配する必要はありません。

ジョン・ロビンズの本:ポストクラッシュ分析に限定する必要はありませんミニダンプを生成するためのいくつかのサンプルコードはこちらhttp://www.amazon.com/Debugging-Microsoft-NET-2-0-Applications/dp/0735622027/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1222366012&sr=8-1

ルック( - あなたのコード内の任意の点なしでそれらを生成することができます)クラッシュ:これまでに答えをhttp://www.codeproject.com/KB/debug/postmortemdebug_standalone1.aspx

+0

ソースシンボルサーバーを設定する方法についての素晴らしいリンク!私はちょうどそれを行うかもしれない。リンクの+1。 – dotnetdev

関連する問題