PDB ファイルを使用すると、クラッシュが発生した場所を診断できると聞いたことがあります。
私の基本的な理解は、Visual Studio にソース ファイル、pdb ファイル、およびクラッシュ情報 (ワトソン博士から?)を提供
するということです。(ありがとうございました!)
3 に答える
PDB ファイルは、アセンブリの MSIL を元のソース行にマップします。つまり、アセンブリと共にコンパイルされた PDB をアセンブリと同じディレクトリに配置すると、例外スタック トレースには、元のソース ファイル内の位置の名前と行が含まれます。PDB ファイルがない場合、スタック トレースの各レベルのクラスとメソッドの名前のみが表示されます。
プロジェクトをビルドすると、PDB ファイルが生成されます。これらには、Visual Studio が解釈できるビルド済みバイナリに関する情報が含まれています。
プログラムがクラッシュしてクラッシュ レポートが生成されると、Visual Studio はそのレポートを取得し、アプリケーションの PDB ファイルを介してソース コードにリンクすることができます。PDB ファイルは、クラッシュ レポートを生成したのと同じバイナリからビルドする必要があります。
時間の経過とともに発生した問題がいくつかあります。
- クラッシュ レポートをデバッグしているマシンでは、バイナリをビルドしたマシンと同じパスにソースが存在する必要があります。
- リリース ビルドは、多くの場合、オブジェクト メンバー変数の状態を表示できない程度まで最適化されます
誰かが前者を倒す方法を知っているなら、私はいくつかの情報に感謝します.
シンボルサーバーのセットアップと、ソースコード管理システムへのPDBファイルのインデックス作成を検討する必要があります。私は最近、私たちの製品のためにこのプロセスを実行しました、そしてそれは非常にうまく機能します。バイナリでPDBファイルを使用できるようにすることや、ダンプファイルをデバッグするときに適切なソースコードを取得する方法について心配する必要はありません。
ミニダンプを生成するためのサンプルコードをここで探してください(クラッシュ後の分析に制限する必要はありません。クラッシュせずにコードの任意の時点で生成できます): http: //www.codeproject.com/KB /debug/postmortemdebug_standalone1.aspx