30

Visual Studio 2010 SP1 で WCF アプリをコンパイルしてサーバーに置いたところ、もちろん初回実行時にエラーが発生し (新機能)、スタック トレースをログ ファイルに出力しました。

私の開発環境への道を見ています。なんで?リリースと比較してデバッグとしてデプロイしたためですか、それとも他に何かあるのでしょうか、それともスタック トレースの出力にもっと注意を払う必要がありますか?

04/09/2012 03:58:46: Error: Object reference not set to an instance of an object.    at App1.Logging.LogMessageToFile(String msg, Boolean isUsingClickOnceApp) in C:\Users\robcube\Documents\Visual Studio 2010\Projects\AppWebService\App1\Logging.cs:line 63
   at App1.App1Main.ConnectWebService(String description) in C:\Users\robcube\Documents\Visual Studio 2010\Projects\AppWebService\App1\International.cs:line 40
04/09/2012 03:58:46: Error: Object reference not set to an instance of an object.    at App1.App1Main.UpdateActivityLog(String data, String userName, Boolean deleteData, Int64 firstId, Int64 lastId, String changeType) in C:\Users\robcube\Documents\Visual Studio 2010\Projects\AppWebService\App1\App1Main.cs:line 641

ありがとう、ロブ

4

2 に答える 2

55

これは、.pdb ファイルと実行可能ファイルをコピーしたためです。CLR は、スタック トレースを生成するときにそれらを検索して、トレース内のスタック フレームに関するできるだけ多くの情報を提供しようとします。.pdb には、ソース ファイル名と行番号が格納されます。

コードのリリース ビルドをデプロイすることになっています。これにより、コードをより高速に実行できる最適化が可能になります。そのビルドの .pdb ファイルを引き続きコピーできます。通常、そのデバッグ情報は削除されています。プロジェクト + プロパティ、リリース ビルド、ビルド、詳細設定、「デバッグ情報」設定に切り替えます。ここでのリリース ビルドの通常の設定は、"full" ではなく "pdb-only" です。これは、ソース ファイルと行番号が含まれていないことを意味します。これは理にかなっていますが、ジッターがコードを最適化した後、スタック トレースは少し信頼性が低くなる傾向があります。

于 2012-09-05T13:08:25.887 に答える
3

デバッグ モードでデプロイする場合、元のソース ファイル パスが PDB (プログラム データベース) ファイルに保存されるのは正常です。

于 2012-09-05T13:00:47.610 に答える