通过


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 对话框的方法,并发出将始终失败的断言。 此类提供以下变体中的写入方法:

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

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

注释

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

可以使用方法或IndentLevel属性修改缩进Indent级别。 若要修改缩进间距,请使用 IndentSize 该属性。 可以通过将属性设置为 来指定是否在每次写入后自动刷新输出缓冲区。

对于 .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++ 中的条件调试的信息,请参阅 Debug 类(C++/CLI)。

若要在 C# 中定义 DEBUG 条件编译符号, /d:DEBUG 请在使用命令行编译代码或添加到文件的顶部时,将选项添加到 #define DEBUG 编译器命令行。 在 Visual Basic 中,将 /d:DEBUG=True 选项添加到编译器命令行或添加到 #Const DEBUG=True 文件。

属性

名称 说明
AutoFlush

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

IndentLevel

获取或设置缩进级别。

IndentSize

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

Listeners

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

方法

名称 说明
Assert(Boolean, Debug+AssertInterpolatedStringHandler, Debug+AssertInterpolatedStringHandler)

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

Assert(Boolean, Debug+AssertInterpolatedStringHandler)

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

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

检查条件;如果条件为 false,则输出两条消息(简单且格式),并显示一个显示调用堆栈的消息框。

Assert(Boolean, String, String)

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

Assert(Boolean, String)

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

Assert(Boolean)

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

Close()

刷新输出缓冲区,然后在每个Listeners输出缓冲区上调用Close该方法。

Fail(String, String)

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

Fail(String)

发出指定的错误消息。

Flush()

刷新输出缓冲区并导致缓冲的数据写入 Listeners 集合。

Indent()

将当前 IndentLevel 值增加一个。

Print(String, Object[])

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

Print(String)

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

Unindent()

将当前 IndentLevel 数减少一个。

Write(Object, String)

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

Write(Object)

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

Write(String, String)

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

Write(String)

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

WriteIf(Boolean, Debug+WriteIfInterpolatedStringHandler, String)

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

WriteIf(Boolean, Debug+WriteIfInterpolatedStringHandler)

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

WriteIf(Boolean, Object, String)

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

WriteIf(Boolean, Object)

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

WriteIf(Boolean, String, String)

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

WriteIf(Boolean, String)

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

WriteLine(Object, String)

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

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)

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

WriteLineIf(Boolean, Object)

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

WriteLineIf(Boolean, String, String)

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

WriteLineIf(Boolean, String)

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

适用于

线程安全性

此类型是线程安全的。

另请参阅