Debug 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
提供一组有助于调试代码的方法和属性。
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 指示程序执行的开始和结束。 该示例还使用 Indent 和 Unindent 来区分跟踪输出。
// 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 对话框和发出始终失败的断言的方法。 此类提供以下变体中的写入方法:
BooleanSwitch和 TraceSwitch 类提供了动态控制跟踪输出的方法。 对于.NET Framework应用,无需重新编译应用程序即可修改这些开关的值。 有关使用配置文件在.NET Framework应用中设置开关的信息,请参阅Switch类和跟踪开关一文。
可以通过向集合中添加 TraceListener 实例或从 Listeners 集合中删除实例来自定义跟踪输出的目标。 集合 Listeners 由 Debug 和 Trace 类共享;向任一类添加跟踪侦听器会将侦听器添加到这两个类。 默认情况下, DefaultTraceListener 类发出跟踪输出。
注意
如果跟踪侦听器 Listeners 使用的资源不可用,则向集合添加跟踪侦听器可能会导致在跟踪时引发异常。 引发的条件和异常取决于跟踪侦听器,本文无法枚举。 在块中try
/catch
调用Debug方法以检测和处理来自跟踪侦听器的任何异常可能会很有用。
可以使用 方法或 IndentLevel 属性修改缩进Indent级别。 若要修改缩进间距,请使用 IndentSize 属性。 可以通过将 属性设置为 AutoFlushtrue
来指定是否在每次写入后自动刷新输出缓冲区。
对于.NET Framework应用,可以通过编辑应用的配置文件为 Debug 设置 AutoFlush 和 IndentSize 。 配置文件的格式应如以下示例所示。
<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 | |
IndentLevel |
获取或设置缩进级别。 |
IndentSize |
获取或设置缩进的空格数。 |
Listeners |
获取监视调试输出的侦听器集合。 |
方法
适用于
线程安全性
此类型是线程安全的。