web-dev-qa-db-ja.com

リリースモードの.NETアセンブリのスタックトレースで行番号を表示する

リリースモードでビルド/デプロイされた.NETアセンブリのスタックトレースに行を表示する方法はありますか?

更新:

私のアプリケーションは、3つのクラスライブラリプロジェクトと1つのASP.NET「ウェブサイト」プロジェクトに分かれています。私が追跡しようとしているエラーは、3つのクラスライブラリプロジェクトの1つにあります。 「オブジェクト参照がオブジェクトのインスタンスに設定されていません」エラーを生成しているクラスライブラリプロジェクトのpdbファイルのみをデプロイしました。

行番号はスタックトレースにまだ表示されていません。スタックトレースの行番号を取得するには、すべてのプロジェクトのpdbファイルを展開する必要がありますか?

実用的なソリューション

各アプリケーションにpdbファイルをデプロイすると、行番号の問題が修正されました。

136
  • スタックトレースの行番号を表示するプロジェクトの[プロパティ]ウィンドウに移動します。
  • ビルドの「垂直タブ」をクリックします。
  • 「リリース」構成を選択します。 DEBUG定数パラメーターを確認してください。
  • 「コードの最適化」パラメーターのチェックを外すと、インラインコードで不定期に発生するトレースの問題を回避できます(この手順は必須ではありません)。
  • [詳細...]ボタンを押して、[出力]-> [デバッグ情報]-> [pdb-only]を選択します。
  • 生成された.pdbファイルをアセンブリと共に展開します。

以下のコメントで実装されています:

  • チェックするもう1つのことは、[パッケージ/ Webの発行]セクションで、[生成されたデバッグシンボルを除外する]チェックボックスもオフになっていることです。
138
Coxy

VS2012では、プロパティの[パッケージ/ Webの公開]セクションでも[生成されたデバッグシンボルを除外する]のチェックを外す必要があります。

17
user3250653

私の解決策

実行可能ファイルと同じフォルダーにpdbファイルをコピーします。

exeファイルを実行すると、行番号を表示できるようになりました。

これが理由です

http://msdn.Microsoft.com/en-us/library/ee416588%28v=vs.85%29.aspx

15
juan carlos

エラーを追跡するために、リリースビルドでPDBファイルを展開する必要があると感じる過去の問題に遭遇しました。理由は、あなたが言ったように、例外が非常に大きいメソッドで発生し、どこで発生したかを正確に特定できなかったからです。

これは、メソッドをより小さく、より詳細なメソッドにリファクタリングする必要があることを示している場合があります。 1つのサイズがすべての答えに適合するわけではありませんが、このアプローチは短期間(リファクタリング中にバグを頻繁に発見しました)および長期的には役立ちました。

ちょっとした考え。

8
slolife

ビルド/デプロイメントパッケージにデバッグシンボルを含めます。

3
Ken Browning

VS 2008 Expressでは、[プロジェクトプロパティ]-> [コンパイル]-> [高度なコンパイルオプション]にあります。

0
Darel