次の方法で共有


Debug クラス

定義

コードのデバッグに役立つ一連のメソッドとプロパティを提供します。

public ref class Debug abstract sealed
public ref class Debug sealed
public static class Debug
public sealed class Debug
type Debug = class
Public Class Debug
Public NotInheritable Class Debug
継承
Debug

次の例では、 Debug を使用して、プログラムの実行の開始と終了を示します。 この例では、トレース出力を区別するために IndentUnindent も使用します。

// Specify /d:DEBUG when compiling.

using System;
using System.Data;
using System.Diagnostics;

class Test
{
    static void Main()
    {
       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();
    }
}
' Specify /d:DEBUG=True when compiling.

Imports System.Data
Imports System.Diagnostics

Class Test

    Shared Sub Main()
    
        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()
        
    End Sub
    
End Class

注釈

出荷製品のパフォーマンスとコード サイズに影響を与えずにコードをより堅牢にするには、 Debug クラスのメソッドを使用してデバッグ情報を出力し、アサーションを使用してロジックを確認します。

このクラスは、 Assert ダイアログ ボックスを表示し、常に失敗するアサーションを出力するメソッドを提供します。 このクラスは、次のバリエーションの書き込みメソッドを提供します。

BooleanSwitchクラスとTraceSwitch クラスは、トレース出力を動的に制御する手段を提供します。 .NET Framework アプリの場合、アプリケーションを再コンパイルすることなく、これらのスイッチの値を変更できます。 構成ファイルを使用して .NET Framework アプリでスイッチを設定する方法については、 Switch クラスと トレース スイッチ に関する記事を参照してください。

トレース出力のターゲットをカスタマイズするには、Listeners コレクションにインスタンスTraceListener追加するか、インスタンスを削除します。 Listeners コレクションは、Debug クラスと Trace クラスの両方で共有されます。どちらのクラスにもトレース リスナーを追加すると、リスナーが両方に追加されます。 既定では、 DefaultTraceListener クラスはトレース出力を出力します。

トレース リスナーを Listeners コレクションに追加すると、トレース リスナーで使用されているリソースが使用できない場合、トレース中に例外がスローされる可能性があります。 条件とスローされる例外はトレース リスナーによって異なります。この記事では列挙できません。 トレース リスナーからの例外を検出して処理するには、try/catch ブロックにDebug メソッドの呼び出しを配置すると便利な場合があります。

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

.NET Framework アプリの場合は、アプリの構成ファイルを編集することで、DebugAutoFlushIndentSizeを設定できます。 構成ファイルは、次の例に示すように書式設定する必要があります。

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

ConditionalAttribute属性は、Debugのメソッドに適用されます。 ConditionalAttributeをサポートするコンパイラは、DEBUGが条件付きコンパイル シンボルとして定義されていない限り、これらのメソッドの呼び出しを無視します。 コンパイラのドキュメントを参照して、 ConditionalAttribute がサポートされているかどうかを確認し、条件付きコンパイル シンボルを定義するための構文を確認します。

Visual Studio C# および Visual Basic プロジェクトでは、既定では、 DEBUG 条件付きコンパイル シンボルはデバッグ ビルド用に定義され、 TRACE シンボルはデバッグ ビルドとリリース ビルドの両方に対して定義されます。 Visual C++ での条件付きデバッグの詳細については、「 デバッグ クラス (C++/CLI)」を参照してください。

C# で DEBUG 条件付きコンパイル シンボルを定義するには、コマンド ラインを使用してコードをコンパイルするときにコンパイラ コマンド ラインに /d:DEBUG オプションを追加するか、ファイルの先頭に #define DEBUG を追加します。 Visual Basic で、 /d:DEBUG=True オプションをコンパイラ コマンド ラインに追加するか、ファイルに #Const DEBUG=True を追加します。

プロパティ

名前 説明
AutoFlush

書き込みのたびにListenersFlush()呼び出す必要があるかどうかを示す値を取得または設定します。

IndentLevel

インデント レベルを取得または設定します。

IndentSize

インデント内のスペースの数を取得または設定します。

Listeners

デバッグ出力を監視しているリスナーのコレクションを取得します。

メソッド

名前 説明
Assert(Boolean, Debug+AssertInterpolatedStringHandler, Debug+AssertInterpolatedStringHandler)

条件を確認します。条件が falseの場合は、指定したメッセージを出力し、呼び出し履歴を示すメッセージ ボックスを表示します。

Assert(Boolean, Debug+AssertInterpolatedStringHandler)

条件を確認します。条件が falseの場合は、指定したメッセージを出力し、呼び出し履歴を示すメッセージ ボックスを表示します。

Assert(Boolean, String, String, Object[])

条件を確認します。条件が falseの場合は、2 つのメッセージ (単純および書式設定済み) を出力し、呼び出し履歴を示すメッセージ ボックスを表示します。

Assert(Boolean, String, String)

条件を確認します。条件が false場合は、指定された 2 つのメッセージを出力し、呼び出し履歴を示すメッセージ ボックスを表示します。

Assert(Boolean, String)

条件を確認します。条件が falseの場合は、指定したメッセージを出力し、呼び出し履歴を示すメッセージ ボックスを表示します。

Assert(Boolean)

条件を確認します。条件が falseの場合は、呼び出し履歴を示すメッセージ ボックスが表示されます。

Close()

出力バッファーをフラッシュし、各ListenersClose メソッドを呼び出します。

Fail(String, String)

エラー メッセージと詳細なエラー メッセージを出力します。

Fail(String)

指定したエラー メッセージを出力します。

Flush()

出力バッファーをフラッシュし、バッファー内のデータを Listeners コレクションに書き込みます。

Indent()

現在の IndentLevel を 1 ずつ増やします。

Print(String, Object[])

書式設定された文字列の後に行終端記号を書き込み、 Listeners コレクション内のトレース リスナーに書き込みます。

Print(String)

メッセージの後に行終端記号を書き込み、 Listeners コレクション内のトレース リスナーに書き込みます。

Unindent()

現在の IndentLevel を 1 ずつ減らします。

Write(Object, String)

Listeners コレクション内のトレース リスナーに、カテゴリ名とオブジェクトのToString() メソッドの値を書き込みます。

Write(Object)

オブジェクトの ToString() メソッドの値を、 Listeners コレクション内のトレース リスナーに書き込みます。

Write(String, String)

カテゴリ名とメッセージを、 Listeners コレクション内のトレース リスナーに書き込みます。

Write(String)

Listeners コレクション内のトレース リスナーにメッセージを書き込みます。

WriteIf(Boolean, Debug+WriteIfInterpolatedStringHandler, String)

指定した条件がtrueされている場合は、Listeners コレクション内のトレース リスナーにカテゴリ名とメッセージを書き込みます。

WriteIf(Boolean, Debug+WriteIfInterpolatedStringHandler)

conditiontrueされている場合は、カテゴリ名とメッセージをListeners コレクション内のトレース リスナーに書き込みます。

WriteIf(Boolean, Object, String)

条件がtrue場合は、Listeners コレクション内のトレース リスナーに、カテゴリ名とオブジェクトのToString() メソッドの値を書き込みます。

WriteIf(Boolean, Object)

条件がtrue場合、オブジェクトのToString() メソッドの値をListeners コレクション内のトレース リスナーに書き込みます。

WriteIf(Boolean, String, String)

条件がtrue場合、カテゴリ名とメッセージをListeners コレクション内のトレース リスナーに書き込みます。

WriteIf(Boolean, String)

条件がtrueされている場合は、Listeners コレクション内のトレース リスナーにメッセージを書き込みます。

WriteLine(Object, String)

Listeners コレクション内のトレース リスナーに、カテゴリ名とオブジェクトのToString() メソッドの値を書き込みます。

WriteLine(Object)

オブジェクトの ToString() メソッドの値を、 Listeners コレクション内のトレース リスナーに書き込みます。

WriteLine(String, Object[])

書式設定されたメッセージの後に行終端記号を書き込み、 Listeners コレクション内のトレース リスナーに書き込みます。

WriteLine(String, String)

カテゴリ名とメッセージを、 Listeners コレクション内のトレース リスナーに書き込みます。

WriteLine(String)

メッセージの後に行終端記号を書き込み、 Listeners コレクション内のトレース リスナーに書き込みます。

WriteLineIf(Boolean, Debug+WriteIfInterpolatedStringHandler, String)

指定した条件がtrueされている場合は、Listeners コレクション内のトレース リスナーにカテゴリ名とメッセージを書き込みます。

WriteLineIf(Boolean, Debug+WriteIfInterpolatedStringHandler)

指定した条件がtrue場合は、Listeners コレクション内のトレース リスナーにメッセージを書き込みます。

WriteLineIf(Boolean, Object, String)

条件がtrue場合は、Listeners コレクション内のトレース リスナーに、カテゴリ名とオブジェクトのToString() メソッドの値を書き込みます。

WriteLineIf(Boolean, Object)

条件がtrue場合、オブジェクトのToString() メソッドの値をListeners コレクション内のトレース リスナーに書き込みます。

WriteLineIf(Boolean, String, String)

条件がtrue場合、カテゴリ名とメッセージをListeners コレクション内のトレース リスナーに書き込みます。

WriteLineIf(Boolean, String)

条件がtrueされている場合は、Listeners コレクション内のトレース リスナーにメッセージを書き込みます。

適用対象

スレッド セーフ

この型はスレッド セーフです。

こちらもご覧ください