Debug Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Proporciona un conjunto de métodos y propiedades que ayudan a depurar el código.
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
- Herencia
-
Debug
Ejemplos
En el ejemplo siguiente se usa Debug para indicar el principio y el final de la ejecución de un programa. En el ejemplo también se usa Indent y Unindent para distinguir la salida de seguimiento.
// 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
Comentarios
Para que el código sea más sólido sin afectar al rendimiento y el tamaño del código del producto de envío, use métodos en la Debug clase para imprimir información de depuración y comprobar la lógica con aserciones.
Esta clase proporciona métodos para mostrar un Assert cuadro de diálogo y para emitir una aserción que siempre producirá un error. Esta clase proporciona métodos de escritura en las siguientes variaciones:
Las BooleanSwitch clases y TraceSwitch proporcionan medios para controlar dinámicamente la salida del seguimiento. En el caso de las aplicaciones de .NET Framework, puede modificar los valores de estos modificadores sin volver a compilar la aplicación. Para obtener información sobre el uso del archivo de configuración para establecer un conmutador en aplicaciones de .NET Framework, consulte el artículo sobre la Switch clase y los modificadores de seguimiento .
Puede personalizar el destino de la salida de seguimiento agregando TraceListener o quitando instancias de la Listeners colección. La Listeners colección la comparten las Debug clases y Trace ; al agregar un agente de escucha de seguimiento a cualquiera de las clases, se agrega el agente de escucha a ambos. De forma predeterminada, la DefaultTraceListener clase emite la salida del seguimiento.
Nota:
Agregar un agente de escucha de seguimiento a la Listeners colección puede provocar una excepción durante el seguimiento, si un recurso usado por el agente de escucha de seguimiento no está disponible. Las condiciones y la excepción iniciada dependen del agente de escucha de seguimiento y no se pueden enumerar en este artículo. Puede ser útil realizar llamadas a los Debug métodos en try/catch bloques para detectar y controlar las excepciones de los agentes de escucha de seguimiento.
Puede modificar el nivel de sangría mediante el Indent método o la IndentLevel propiedad . Para modificar el espaciado de sangría, use la IndentSize propiedad . Puede especificar si se vacia automáticamente el búfer de salida después de cada escritura estableciendo la AutoFlush propiedad trueen .
Para las aplicaciones de .NET Framework, puede establecer y IndentSize para Debug mediante la AutoFlush edición del archivo de configuración de la aplicación. El archivo de configuración debe tener el formato tal como se muestra en el ejemplo siguiente.
<configuration>
<system.diagnostics>
<trace autoflush="true" indentsize="7" />
</system.diagnostics>
</configuration>
El ConditionalAttribute atributo se aplica a los métodos de Debug. Los compiladores que admiten ConditionalAttribute omitir llamadas a estos métodos, a menos DEBUG que se definan como un símbolo de compilación condicional. Consulte la documentación de un compilador para determinar si ConditionalAttribute se admite y la sintaxis para definir un símbolo de compilación condicional.
Nota:
En los proyectos de Visual Studio C# y Visual Basic, de forma predeterminada, el DEBUG símbolo de compilación condicional se define para compilaciones de depuración y el TRACE símbolo se define para compilaciones de depuración y versión. Para obtener información sobre la depuración condicional en Visual C++, vea Clase de depuración (C++/CLI).
Para definir el DEBUG símbolo de compilación condicional en C#, agregue la /d:DEBUG opción a la línea de comandos del compilador al compilar el código mediante una línea de comandos o agregue #define DEBUG a la parte superior del archivo. En Visual Basic, agregue la /d:DEBUG=True opción a la línea de comandos del compilador o agregue #Const DEBUG=True al archivo.
Propiedades
| Nombre | Description |
|---|---|
| AutoFlush |
Obtiene o establece un valor que indica si Flush() se debe llamar a en Listeners después de cada escritura. |
| IndentLevel |
Obtiene o establece el nivel de sangría. |
| IndentSize |
Obtiene o establece el número de espacios en una sangría. |
| Listeners |
Obtiene la colección de agentes de escucha que supervisan la salida de depuración. |
Métodos
| Nombre | Description |
|---|---|
| Assert(Boolean, Debug+AssertInterpolatedStringHandler, Debug+AssertInterpolatedStringHandler) |
Comprueba si hay una condición; si la condición es |
| Assert(Boolean, Debug+AssertInterpolatedStringHandler) |
Comprueba si hay una condición; si la condición es |
| Assert(Boolean, String, String, Object[]) |
Comprueba si hay una condición; si la condición es |
| Assert(Boolean, String, String) |
Comprueba si hay una condición; si la condición es |
| Assert(Boolean, String) |
Comprueba si hay una condición; si la condición es |
| Assert(Boolean) |
Comprueba si hay una condición; si la condición es |
| Close() |
Vacía el búfer de salida y, a continuación, llama al |
| Fail(String, String) |
Emite un mensaje de error y un mensaje de error detallado. |
| Fail(String) |
Emite el mensaje de error especificado. |
| Flush() |
Vacía el búfer de salida y hace que los datos almacenados en búfer escriban en la Listeners colección. |
| Indent() |
Aumenta el actual IndentLevel en uno. |
| Print(String, Object[]) |
Escribe una cadena con formato seguida de un terminador de línea en los agentes de escucha de seguimiento de la Listeners colección. |
| Print(String) |
Escribe un mensaje seguido de un terminador de línea en los agentes de escucha de seguimiento de la Listeners colección. |
| Unindent() |
Disminuye el actual IndentLevel en uno. |
| Write(Object, String) |
Escribe un nombre de categoría y el valor del método del ToString() objeto en los agentes de escucha de seguimiento de la Listeners colección. |
| Write(Object) |
Escribe el valor del método del ToString() objeto en los agentes de escucha de seguimiento de la Listeners colección. |
| Write(String, String) |
Escribe un nombre de categoría y un mensaje en los agentes de escucha de seguimiento de la Listeners colección. |
| Write(String) |
Escribe un mensaje en los agentes de escucha de seguimiento de la Listeners colección. |
| WriteIf(Boolean, Debug+WriteIfInterpolatedStringHandler, String) |
Escribe un nombre de categoría y un mensaje en los agentes de escucha de seguimiento de la Listeners colección si una condición especificada es |
| WriteIf(Boolean, Debug+WriteIfInterpolatedStringHandler) |
Si |
| WriteIf(Boolean, Object, String) |
Escribe un nombre de categoría y el valor del método del ToString() objeto en los agentes de escucha de seguimiento de la Listeners colección si una condición es |
| WriteIf(Boolean, Object) |
Escribe el valor del método del ToString() objeto en los agentes de escucha de seguimiento de la Listeners colección si una condición es |
| WriteIf(Boolean, String, String) |
Escribe un nombre de categoría y un mensaje en los agentes de escucha de seguimiento de la Listeners colección si una condición es |
| WriteIf(Boolean, String) |
Escribe un mensaje en los agentes de escucha de seguimiento de la Listeners colección si una condición es |
| WriteLine(Object, String) |
Escribe un nombre de categoría y el valor del método del ToString() objeto en los agentes de escucha de seguimiento de la Listeners colección. |
| WriteLine(Object) |
Escribe el valor del método del ToString() objeto en los agentes de escucha de seguimiento de la Listeners colección. |
| WriteLine(String, Object[]) |
Escribe un mensaje con formato seguido de un terminador de línea en los agentes de escucha de seguimiento de la Listeners colección. |
| WriteLine(String, String) |
Escribe un nombre de categoría y un mensaje en los agentes de escucha de seguimiento de la Listeners colección. |
| WriteLine(String) |
Escribe un mensaje seguido de un terminador de línea en los agentes de escucha de seguimiento de la Listeners colección. |
| WriteLineIf(Boolean, Debug+WriteIfInterpolatedStringHandler, String) |
Escribe un nombre de categoría y un mensaje en los agentes de escucha de seguimiento de la Listeners colección si una condición especificada es |
| WriteLineIf(Boolean, Debug+WriteIfInterpolatedStringHandler) |
Escribe un mensaje en los agentes de escucha de seguimiento de la Listeners colección si una condición especificada es |
| WriteLineIf(Boolean, Object, String) |
Escribe un nombre de categoría y el valor del método del ToString() objeto en los agentes de escucha de seguimiento de la Listeners colección si una condición es |
| WriteLineIf(Boolean, Object) |
Escribe el valor del método del ToString() objeto en los agentes de escucha de seguimiento de la Listeners colección si una condición es |
| WriteLineIf(Boolean, String, String) |
Escribe un nombre de categoría y un mensaje en los agentes de escucha de seguimiento de la Listeners colección si una condición es |
| WriteLineIf(Boolean, String) |
Escribe un mensaje en los agentes de escucha de seguimiento de la Listeners colección si una condición es |
Se aplica a
Seguridad para subprocesos
Este tipo es seguro para subprocesos.