この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 27663|答える: 0

[出典] .net/c# log4net エラー例外は行番号の原因を記録しません

[リンクをコピー]
掲載地 2017/08/03 14:13:01 | | | |
最近、本番環境にデプロイされたプロジェクトが、いくつかの手法が異常なメッセージを送ることが判明しました

しかし、異常エラー情報のみが与えられ、異常行番号はなく、ある方法でのモデル変換に問題があるだけが示されています

でも一つずつ比較させてください。面倒すぎます。間違った行番号を記録すればいいのでは?

log4netのログ構成は以下の通りです:

C# Log4netのログ構成について詳細に説明しています
http://www.itsvse.com/thread-2892-1-1.html
(出典:建築家)

ローカルコンピュータのHome/Indexメソッドで、行番号が記録されるかどうか確認するために、意図的に例外メッセージを書きました:



エラーログファイルは行番号を記録することに気づきましたが、log4netの設定では問題ありません。両側の設定が同じだからです

コンパイルモードに問題があるのでしょうか???

私のローカルパソコンはデバッグモードで、公式サーバーでコンパイルされたDLLはリリースモードです

その後、ローカルプロジェクトをリリースモードに変更しましたが、それでもレコード行番号のままであることがわかりました。

それから、白度、最初の一文はこうだ。dllに対応する.pdbファイルをコピーする必要があります

それって問題か? 次に、直接binディレクトリにアクセスし、dllに対応する.pdbファイルを削除し、ウェブサイトを更新したところ、以下の例外ログを見つけました。



案の定、異常な行番号は記録されていません!!!!

本当に.pdbの問題なのでしょうか!! .pdbファイルは保持しておく必要があります。そうすれば行番号が異常な場合に記録されます!!



PDBファイルとは何のためのものですか?


PDBファイル:すべての開発者が知っておくべきこと

PDBファイルとは何ですか?

ほとんどの開発者は、PDBファイルがソフトウェアのデバッグを助けるために使われていることを知っているはずです。 しかし、彼がどのように機能しているのかは、私たちがよく知らないかもしれません。 この記事では、PDBファイルの保存と内容について説明します。 また、デバッガがbinayに対応するPDBファイルをどのように見つけ、またbinayに対応するソースコードファイルをどのように見つけるかも記述しています。 この記事はすべてのネイティブおよびマネージド開発者向けです。

始める前に、まず2つの用語を定義しましょう。private buildは開発者自身のマシン上で生成されたビルドを指すものです。 パブリックビルドとは、パブリックビルドマシン上で生成されたビルドを指します。 プライベートビルドは比較的シンプルです。なぜならPDBとBinayが同じ場所にあるからで、通常問題はパブリックビルドに関するものです。  

すべての開発者が知っておくべき最も重要なことは「PDBファイルはソースコードと同じくらい重要だ」ということであり、それがなければデバッグすらできません。 公開ビルドの場合、シンボルサーバーはすべてのPDBを保存し、ユーザーがエラーを報告するとデバッガが自動的にbinay内の対応PDBファイルを見つけ、Visual StudioとWindbgの両方がシンボルサーバーへのアクセス方法を知っています。 PDBとbinayをシンボルサーバーに格納する前に、PDB実行をソースインデックスし、PDBとソースを関連付ける必要があります。  

次の部分では、シンボルサーバーとソースサーバーのインデックス作成がすでに設定されていることを前提とします。 TFS2010は、新しいビルドのためのソースインデックス作成やシンボルサーバーのコピーと同じくらい簡単にできます。

2. PDBファイルの内容

PDBの内容を正式に開始するにあたり、PDBは公開されているファイル形式ではありませんが、MicrosoftはPDBからデータを取得するためのAPIを提供しています。

ネイティブC++のPDBには以下の情報が含まれています:
* パブリック、プライベート、静的機能アドレス;
* グローバル変数の名前とアドレス;
* パラメータおよびローカル変数名およびスタック上のオフセット;
* クラス、構造、データの型定義;
* x86上のネイティブスタックをトラバースするためのフレームポインタ省略データ;
* ソースコードファイル内の名前と行数;

.NET PDBには2つの情報部分のみが含まれています:
* ソースコードファイル名と行数;
* および局所変数の名前;
* その他のすべてのデータはすでに 。 NETメタデータ;  





先の:管理者が設定したポリシーのため、ディスクがオフラインになっています
次に:一緒にビジネスを始めるためにウェブサイト技術者を見つけましょう
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com