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由这两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应用,可以通过编辑应用的配置文件来设置AutoFlush和IndentSize设置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 | |
IndentLevel |
获取或设置缩进级别。 |
IndentSize |
获取或设置缩进的空格数。 |
Listeners |
获取监视调试输出的侦听器集合。 |
方法
适用于
线程安全性
此类型是线程安全的。