Debug クラス, Trace クラス

この Debug と Trace の2つのクラスは、ともに TraceListener の派生クラスを保持しており、実際の出力制御はそれらのクラスによって行われる。
アプリケーション起動時*1、これらのクラスは System.Diagnostics.DefaultTraceListener のインスタンスを1つだけ保持している。
この DefaultTraceListener クラスが Debugger.Log() の呼び出しを行っているわけだ。
また、Win32 の標準デバッグ出力に対しても出力を行っているので、クラシックなデバッグ支援ツールなどとの連携も可能になっている。
これらのクラスはログ出力だけではなく Assert() メソッドのほうが使用頻度が高いだろう。

*1:アプリケーションドメイン作成時