Debug 类

提供一组帮助调试代码的方法和属性。无法继承此类。

**命名空间:**System.Diagnostics
**程序集:**System(在 system.dll 中)

语法

声明
Public NotInheritable Class Debug
用法
Dim instance As Debug
public sealed class Debug
public ref class Debug sealed
public final class Debug
public final class Debug

备注

如果使用 Debug 类中的方法输出调试信息和使用断言检查逻辑,则可以使代码更加可靠并且不会影响要发布的产品的性能和代码大小。

在 Visual Studio 2005 项目中,创建调试版本可启用 Debug。有关如何禁用 Debug 的信息,请参见 Visual Studio 2005 文档。

相反,在 Visual Studio 2005 项目中,在默认情况下,对于发布和调试版本都启用了 Trace,所以会为发布和调试版本中的所有跟踪方法生成代码。因此,可以使用 Trace 配置发布版本。

此类提供的方法用于显示 Assert 对话框并发出将总是失败的断言。此类提供下列变体形式的写方法:WriteWriteLineWriteIfWriteLineIf

BooleanSwitchTraceSwitch 类提供动态控制跟踪输出的方法。不用重新编译应用程序即可修改这些开关的值。有关使用配置文件设置开关的信息,请参见 Switch 类和跟踪开关主题。

可通过将 TraceListener 实例添加到 Listeners 集合或将实例从该集合移除来自定义跟踪输出的目标。默认情况下,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 方法上。

主题 位置
如何:使用跟踪和调试进行条件编译 .NET Framework:调试
如何:在应用程序中跟踪代码 .NET Framework:调试
如何:向应用程序代码添加跟踪语句 .NET Framework:调试
如何:创建和初始化跟踪侦听器 .NET Framework:调试
如何:配置跟踪开关 .NET Framework:调试
如何:创建和初始化跟踪侦听器 .NET Framework:调试
如何:使用跟踪和调试进行条件编译 .NET Framework:调试
如何:配置跟踪开关 .NET Framework:调试
如何:在应用程序中跟踪代码 .NET Framework:调试
如何:向应用程序代码添加跟踪语句 .NET Framework:调试

示例

下面的示例使用 Debug 指示程序执行的开始和结束。该示例还使用 IndentUnindent 区分跟踪输出。

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
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;
}
#using <System.dll>
int main( void )
{
   using namespace System;
   using namespace System::Diagnostics;
   Debug::Listeners->Add( gcnew 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.Object
  System.Diagnostics.Debug

线程安全

该类型对于多线程操作是安全的。

平台

Windows 98、Windows 2000 SP4、Windows CE、Windows Millennium Edition、Windows Mobile for Pocket PC、Windows Mobile for Smartphone、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition

.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求

版本信息

.NET Framework

受以下版本支持:2.0、1.1、1.0

.NET Compact Framework

受以下版本支持:2.0、1.0

请参见

参考

Debug 成员
System.Diagnostics 命名空间
Trace
Switch
BooleanSwitch 类
TraceSwitch
TraceListener
DefaultTraceListener
ConsoleTraceListener 类
EventLogTraceListener
TraceListenerCollection
ConditionalAttribute 类