48

PDB ファイルを使用すると、クラッシュが発生した場所を診断できると聞いたことがあります。
私の基本的な理解は、Visual Studio にソース ファイル、pdb ファイル、およびクラッシュ情報 (ワトソン博士から?)を提供
するということです。(ありがとうございました!)

4

3 に答える 3

42

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

于 2008-09-16T13:25:34.610 に答える
36

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

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

時間の経過とともに発生した問題がいくつかあります。

  • クラッシュ レポートをデバッグしているマシンでは、バイナリをビルドしたマシンと同じパスにソースが存在する必要があります。
  • リリース ビルドは、多くの場合、オブジェクト メンバー変数の状態を表示できない程度まで最適化されます

誰かが前者を倒す方法を知っているなら、私はいくつかの情報に感謝します.

于 2008-09-16T13:31:34.610 に答える
12

シンボルサーバーのセットアップと、ソースコード管理システムへのPDBファイルのインデックス作成を検討する必要があります。私は最近、私たちの製品のためにこのプロセスを実行しました、そしてそれは非常にうまく機能します。バイナリでPDBファイルを使用できるようにすることや、ダンプファイルをデバッグするときに適切なソースコードを取得する方法について心配する必要はありません。

John Robbinsの本: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

于 2008-09-25T18:06:58.200 に答える