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 /DDEBUG when compiling.

#using <System.dll>
using namespace System;
using namespace System::Diagnostics;

int main( void )
{
   #if defined(DEBUG)
   Debug::Listeners->Add( gcnew TextWriterTraceListener( Console::Out ) );
   Debug::AutoFlush = true;
   Debug::Indent();
   Debug::WriteLine( "Entering Main" );
   #endif
   Console::WriteLine( "Hello World." );
   #if defined(DEBUG)
   Debug::WriteLine( "Exiting Main" );
   Debug::Unindent();
   #endif
   return 0;
}
// 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 对话框的方法,并发出将始终失败的断言。 此类提供以下变体中的写入方法:

这些 BooleanSwitchTraceSwitch 类提供动态控制跟踪输出的方法。 对于.NET Framework应用,无需重新编译应用程序即可修改这些开关的值。 有关使用配置文件在.NET Framework应用中设置交换机的信息,请参阅Switch类和跟踪开关一文。

可以通过向集合中添加 TraceListener 实例或删除实例 Listeners 来自定义跟踪输出的目标。 集合Listeners由这两DebugTrace个类共享;向任一类添加跟踪侦听器会将侦听器添加到这两者。 默认情况下, DefaultTraceListener 类会发出跟踪输出。

备注

如果跟踪侦听器使用的资源不可用,则向集合中添加跟踪侦听器 Listeners 可能会导致引发异常。 引发的条件和异常取决于跟踪侦听器,本文中无法枚举。 对块中try/catch方法的调用Debug可能很有用,以检测和处理跟踪侦听器的任何异常。

可以使用方法或IndentLevel属性修改缩进Indent级别。 若要修改缩进间距,请使用 IndentSize 该属性。 You can specify whether to automatically flush the output buffer after each write by setting the AutoFlush property to true.

对于.NET Framework应用,可以通过编辑应用的配置文件来设置AutoFlushIndentSize设置Debug应用。 应格式化配置文件,如以下示例所示。

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

此属性 ConditionalAttribute 应用于 . 的方法 Debug。 除非定义为条件编译符号,否则DEBUG支持ConditionalAttribute忽略对这些方法的调用的编译器。 请参阅编译器的文档,以确定是否 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

获取或设置一个值,通过该值指示每次写入后是否应在 Flush() 上调用 Listeners

IndentLevel

获取或设置缩进级别。

IndentSize

获取或设置缩进的空格数。

Listeners

获取监视调试输出的侦听器集合。

方法

Assert(Boolean)

检查条件 ;如果条件为 false,则显示一个消息框,其中显示调用堆栈。

Assert(Boolean, Debug+AssertInterpolatedStringHandler)

检查条件;如果条件为 false,则输出指定消息并显示指示调用堆栈的消息框。

Assert(Boolean, Debug+AssertInterpolatedStringHandler, Debug+AssertInterpolatedStringHandler)

检查条件;如果条件为 false,则输出指定消息并显示指示调用堆栈的消息框。

Assert(Boolean, String)

检查条件;如果条件为 false,则输出指定消息并显示指示调用堆栈的消息框。

Assert(Boolean, String, String)

检查条件 ;如果条件为 false,则输出两条指定消息,并显示一个消息框,其中显示调用堆栈。

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

检查条件;如果条件为 false,则输出两条指定消息(简单消息和格式化消息),并显示一个消息框,其中会显示调用堆栈。

Close()

刷新输出缓冲区,然后对所有 Listeners 调用 Close 方法。

Fail(String)

发出指定的错误消息。

Fail(String, String)

发出错误消息及详细的错误消息。

Flush()

刷新输出缓冲区,并使放入缓冲区中的数据写入 Listeners 集合。

Indent()

将当前的 IndentLevel 增加 1。

Print(String)

将后跟行结束符的消息写入 Listeners 集合中的跟踪侦听器。

Print(String, Object[])

将后跟行结束符的格式化字符串写入 Listeners 集合中的跟踪侦听器。

Unindent()

将当前的 IndentLevel 减少 1。

Write(Object)

将对象 ToString() 方法的值写入 Listeners 集合中的跟踪侦听器。

Write(Object, String)

将类别名称和对象的 ToString() 方法的值写入 Listeners 集合中的跟踪侦听器。

Write(String)

将消息写入 Listeners 集合中的跟踪侦听器。

Write(String, String)

将类别名称和消息写入 Listeners 集合中的跟踪侦听器。

WriteIf(Boolean, Debug+WriteIfInterpolatedStringHandler)

true如果是condition,则向集合中的Listeners跟踪侦听器写入类别名称和消息。

WriteIf(Boolean, Debug+WriteIfInterpolatedStringHandler, String)

如果指定条件为true,则向集合中的Listeners跟踪侦听器写入类别名称和消息。

WriteIf(Boolean, Object)

如果条件为 true,则向 Listeners 集合中的跟踪侦听器写入对象的 ToString() 方法。

WriteIf(Boolean, Object, String)

如果条件为 true,则向 Listeners 集合中的跟踪侦听器写入类别名称和对象的 ToString() 方法值。

WriteIf(Boolean, String)

如果条件为 true,则将消息写入 Listeners 集合中的跟踪侦听器。

WriteIf(Boolean, String, String)

如果条件为 true,则将类别名称和消息写入 Listeners 集合中的跟踪侦听器。

WriteLine(Object)

将对象 ToString() 方法的值写入 Listeners 集合中的跟踪侦听器。

WriteLine(Object, String)

将类别名称和对象的 ToString() 方法的值写入 Listeners 集合中的跟踪侦听器。

WriteLine(String)

将后跟行结束符的消息写入 Listeners 集合中的跟踪侦听器。

WriteLine(String, Object[])

将后跟行结束符的格式化消息写入 Listeners 集合中的跟踪侦听器。

WriteLine(String, String)

将类别名称和消息写入 Listeners 集合中的跟踪侦听器。

WriteLineIf(Boolean, Debug+WriteIfInterpolatedStringHandler)

如果指定条件为 true,则向集合中的Listeners跟踪侦听器写入消息。

WriteLineIf(Boolean, Debug+WriteIfInterpolatedStringHandler, String)

如果指定条件为 true,将类别名称和消息写入集合中的Listeners跟踪侦听器。

WriteLineIf(Boolean, Object)

如果条件为 true,则向 Listeners 集合中的跟踪侦听器写入对象的 ToString() 方法。

WriteLineIf(Boolean, Object, String)

如果条件为 true,则向 Listeners 集合中的跟踪侦听器写入类别名称和对象的 ToString() 方法值。

WriteLineIf(Boolean, String)

如果条件为 true,则将消息写入 Listeners 集合中的跟踪侦听器。

WriteLineIf(Boolean, String, String)

如果条件为 true,则将类别名称和消息写入 Listeners 集合中的跟踪侦听器。

适用于

线程安全性

此类型是线程安全的。

另请参阅