のようです
Debugの使用法がリリース構成でコンパイルされるという注目すべき例外を除いて、ほとんど同じです。
どちらを使用し、もう一方を使用しないのですか?これまでに私が掘り下げた唯一の答えは、Debugクラスを使用して、デバッグ構成でのみ表示される出力を生成し、Traceはリリース構成のままですが、私の頭の中の質問には答えられません。
Traceは再コンパイルせずにオフにできるため、コードをインストルメントする場合、なぜDebugを使用するのでしょうか。 ?
主な違いは、指定したものです。デバッグにはリリースに含まれませんが、トレースには含まれます。
私が理解しているように、意図された違いは、開発チームがDebugを使用して、製品の消費者にとって詳細すぎる(または明らかになる)と判明する可能性のあるリッチで説明的なメッセージを出力する可能性がある一方で、Traceは、より具体的にはアプリケーションのインスツルメンテーションに向けられたメッセージ。
あなたの最後の質問に答えるために、私がデバッグを使用して、私がリリースするつもりだったコードの一部を計測する理由を考えることはできません。
お役に立てれば。
デバッグは、純粋なデバッグ目的で使用されます。デバッグ実行(デバッグモード)でリッチメッセージを発行します。
トレースは、アプリケーションのデバッグ、バグ修正、およびプロファイリング(リリース後)に役立ちます。
Debugクラスは、リリースモードでは使用されません。
トレースとデバッグの唯一の違いは、リリースビルドにコンパイルされるときに、トレースステートメントがプログラムにデフォルトで含まれるのに対し、デバッグステートメントは含まれないことです。
したがって、デバッグクラスは主に開発フェーズでのデバッグに使用されますが、トレースは、アプリケーションのコンパイルおよびリリース後にテストおよび最適化に使用できます。
Log4netの機能ははるかに柔軟で堅牢であるため、トレースにlog4netを使用することを検討します。
しかし、私や内部テスター以外の誰かが見るつもりのない真のデバッグメッセージについては、おそらくデバッグを使用します。
パフォーマンスに敏感なコードブロックの場合、Traceをコンパイル済みのままにして無効にすると、パフォーマンスに違いが生じる可能性があります。
あなたはあなた自身の質問に答えました。デバッグメッセージが残っている場合、人々はそれらを見ることができます。たとえば、次のようにするとします。
Debug.WriteLine( "ユーザー名でDBに接続しています:blahとPW:pass");
コードを逆コンパイルした人なら誰でもそれを見ることができます。しかし、それはテスト中に知っておくべき非常に重要なことかもしれません。
トレースが違います。トレースを行う場合は、おそらくlog4netを使用します。
これは、トレースとデバッグの完全な違いです。デバッグとトレースはどちらもSystem.Diagnostics名前空間を使用します。
デバッグ
痕跡
参照: csharp corner