Debug クラス

コードのデバッグに使用するメソッドとプロパティのセットを提供します。このクラスは継承できません。

この型のすべてのメンバの一覧については、Debug メンバ を参照してください。

System.Object
   System.Diagnostics.Debug

NotInheritable Public Class Debug
[C#]
public sealed class Debug
[C++]
public __gc __sealed class Debug
[JScript]
public class Debug

スレッドセーフ

この型は、マルチスレッド操作に対して安全です。

解説

Debug クラスのメソッドを使用し、デバッグ情報を出力し、アサーションと照らし合わせて論理チェックを行うことで、パフォーマンスや出荷製品のサイズに影響を与えることなくコードの信頼性を高めることができます。

Visual Studio .NET プロジェクトでは、デバッグ ビルドを作成すると、 Debug が有効になります。 Debug を無効にする方法については、Visual Studio .NET ドキュメントを参照してください。

これに対して Visual Studio .NET プロジェクトでの Trace は、リリース ビルドでもデバッグ ビルドでも既定で有効になるため、リリース ビルドとデバッグ ビルドの両方ですべてのトレース メソッドのためのコードが生成されます。したがって、 Trace を使用してリリース ビルドを導入できます。

このクラスには、 Assert ダイアログ ボックスを表示するメソッド、および常に Fail になるアサーションを出力するメソッドが用意されています。このクラスは次の種類の書き込みメソッドを提供します。 WriteWriteLineWriteIf 、および WriteLineIf

BooleanSwitch クラスおよび TraceSwitch クラスは、トレース出力を動的に制御する手段を提供します。これらのスイッチの値はアプリケーションを再コンパイルせずに変更できます。構成ファイルを使用してスイッチを設定する方法については、Visual Studio .NET ドキュメントの Switch クラスおよび TraceSwitch の設定に関するトピックを参照してください。

Listeners コレクションに TraceListener インスタンスを追加したり、コレクションからインスタンスを削除することによって、トレース出力対象をカスタマイズできます。既定では、 DefaultTraceListener クラスはトレース出力を出力します。

Indent メソッドまたは IndentLevel プロパティを使用して、インデントのレベルを変更できます。インデントの文字間隔を変更するには、 IndentSize プロパティを使用します。 AutoFlush プロパティを true に設定することによって、書き込むたびに出力バッファを自動的にフラッシュするかどうかを指定できます。

DebugAutoFlushIndentSize を設定するために、アプリケーション名に対応する構成ファイルを編集することもできます。構成ファイルの書式は次の例のようになります。

<configuration>
    <system.diagnostics>
       <trace autoflush="true" indentsize="7" />
    </system.diagnostics>
 </configuration>

メモ   C# でデバッグを有効にするには、コードのコンパイル時に /d:DEBUG フラグをコンパイラのコマンド ラインに追加するか、 #define DEBUG をファイルの最上部に挿入します。Visual Basic では、コンパイラのコマンド ラインに /d:DEBUG=True フラグを追加します。C++ のマネージ拡張でこれと同等の機能を使用するには、このクラスのメソッド呼び出しを #ifdef DEBUG ... #endif ブロックで囲む必要があります。この構文はコンパイラ固有です。 Debug のメソッドには条件付きコンパイル属性があるため、上記以外のコンパイラを使用する場合は、使用するコンパイラのドキュメントを参照して条件付きコンパイルを有効にする必要があります。

使用例

Debug を使用してプログラム実行の最初と最後を指定する例を次に示します。この例では、 IndentUnindent も使用してトレース出力を区別します。

 
Public Shared Function Main(args() As String) As Integer
    Debug.Listeners.Add(New TextWriterTraceListener(Console.Out))
    Debug.AutoFlush = True
    Debug.Indent()
    Debug.WriteLine("Entering Main")
    Console.WriteLine("Hello World.")
    Debug.WriteLine("Exiting Main")
    Debug.Unindent()
    Return 0
End Function 'Main

[C#] 
public static int Main(string[] args)
{
   Debug.Listeners.Add(new TextWriterTraceListener(Console.Out));
   Debug.AutoFlush = true;
   Debug.Indent();
   Debug.WriteLine("Entering Main");
   Console.WriteLine("Hello World.");
   Debug.WriteLine("Exiting Main"); 
   Debug.Unindent();
   return 0;
}


[C++] 
#using <mscorlib.dll>
#using <System.dll>

int main(void)
{
    using namespace System;
    using namespace System::Diagnostics;

    Debug::Listeners->Add(new TextWriterTraceListener(Console::Out));
    Debug::AutoFlush = true;
    Debug::Indent();
    Debug::WriteLine(S"Entering Main");

    Console::WriteLine(S"Hello World.");

    Debug::WriteLine(S"Exiting Main");

    Debug::Unindent();
    return 0;
}

[JScript] 
public function Main() : int
{
   Debug.Listeners.Add(new TextWriterTraceListener(Console.Out));
   Debug.AutoFlush = true;
   Debug.Indent();
   Debug.WriteLine("Entering Main");
   Console.WriteLine("Hello World.");
   Debug.WriteLine("Exiting Main"); 
   Debug.Unindent();
   return 0;
}

必要条件

名前空間: System.Diagnostics

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET

アセンブリ: System (System.dll 内)

参照

Debug メンバ | System.Diagnostics 名前空間 | Trace | Switch | BooleanSwitch | TraceSwitch | TraceListener | DefaultTraceListener | EventLogTraceListener | TraceListenerCollection | ConditionalAttribute