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 /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
Comentarios
Para que el código sea más sólido sin afectar al rendimiento y al tamaño del código del producto de envío, use métodos de 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 de 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 cómo usar el archivo de configuración para establecer un modificador en aplicaciones de .NET Framework, consulte la Switch clase y el artículo 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 cualquier clase, se agrega el agente de escucha a ambos. De forma predeterminada, la DefaultTraceListener clase emite la salida de 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 vaciar automáticamente el búfer de salida después de cada escritura estableciendo la AutoFlush propiedad true
en .
En el caso de las aplicaciones de .NET Framework, puede establecer y IndentSize para Debug si edita el AutoFlush 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 la omisión de 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 las compilaciones de depuración y el TRACE
símbolo se define para las 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
AutoFlush |
Obtiene o establece un valor que indica si debe llamarse al método Flush() en la propiedad Listeners después de cada escritura. |
IndentLevel |
Obtiene o establece el nivel de sangría. |
IndentSize |
Obtiene o establece el número de espacios de una sangría. |
Listeners |
Obtiene la colección de agentes de escucha que está supervisando los resultados de la depuración. |
Métodos
Assert(Boolean) |
Comprueba una condición; si la condición es |
Assert(Boolean, Debug+AssertInterpolatedStringHandler) |
Comprueba una condición; si la condición es |
Assert(Boolean, Debug+AssertInterpolatedStringHandler, Debug+AssertInterpolatedStringHandler) |
Comprueba una condición; si la condición es |
Assert(Boolean, String) |
Comprueba una condición; si la condición es |
Assert(Boolean, String, String) |
Comprueba una condición; si la condición es |
Assert(Boolean, String, String, Object[]) |
Comprueba una condición; si esta es |
Close() |
Vacía el búfer de resultados y llama al método |
Fail(String) |
Emite el mensaje de error especificado. |
Fail(String, String) |
Emite un mensaje de error y un mensaje de error detallado. |
Flush() |
Vacía el búfer de salida y hace que los datos almacenados en búfer se escriban en la colección Listeners. |
Indent() |
Aumenta el IndentLevel actual en uno. |
Print(String) |
Escribe un mensaje seguido de un terminador de línea en los agentes de escucha de seguimiento de la colección de Listeners. |
Print(String, Object[]) |
Escribe una cadena con formato seguida de un terminador de línea en los agentes de escucha de seguimiento de la colección de Listeners. |
Unindent() |
Disminuye el IndentLevel actual en uno. |
Write(Object) |
Escribe el valor del método ToString() del objeto en los agentes de escucha en la colección Listeners. |
Write(Object, String) |
Escribe un nombre de categoría y el valor del método ToString() del objeto en los agentes de escucha en la colección Listeners. |
Write(String) |
Escribe un mensaje en los agentes de escucha de seguimiento de la colección Listeners. |
Write(String, String) |
Escribe un mensaje y un nombre de categoría a los agentes de escucha de seguimiento de la colección Listeners. |
WriteIf(Boolean, Debug+WriteIfInterpolatedStringHandler) |
Si |
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, Object) |
Escribe el valor del método ToString() del objeto en los agentes de escucha de seguimiento de la colección Listeners si una condición es |
WriteIf(Boolean, Object, String) |
Escribe un nombre de categoría y el valor del método ToString() del objeto en los agentes de escucha en la colección Listeners si una condición es |
WriteIf(Boolean, String) |
Escribe un mensaje a los agentes de escucha de la colección Listeners si una condición es |
WriteIf(Boolean, String, String) |
Escribe un nombre de categoría y un mensaje a los agentes de escucha de la colección Listeners si una condición es |
WriteLine(Object) |
Escribe el valor del método ToString() del objeto en los agentes de escucha en la colección Listeners. |
WriteLine(Object, String) |
Escribe un nombre de categoría y el valor del método ToString() del objeto en los agentes de escucha en la colección Listeners. |
WriteLine(String) |
Escribe un mensaje seguido de un terminador de línea en los agentes de escucha de seguimiento de la colección de Listeners. |
WriteLine(String, Object[]) |
Escribe un mensaje con formato seguida de un terminador de línea en los agentes de escucha de seguimiento de la colección de Listeners. |
WriteLine(String, String) |
Escribe un mensaje y un nombre de categoría a los agentes de escucha de seguimiento de la colección Listeners. |
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, 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, Object) |
Escribe el valor del método ToString() del objeto en los agentes de escucha de seguimiento de la colección Listeners si una condición es |
WriteLineIf(Boolean, Object, String) |
Escribe un nombre de categoría y el valor del método ToString() del objeto en los agentes de escucha en la colección Listeners si una condición es |
WriteLineIf(Boolean, String) |
Escribe un mensaje a los agentes de escucha de la colección Listeners si una condición es |
WriteLineIf(Boolean, String, String) |
Escribe un nombre de categoría y un mensaje a los agentes de escucha de la colección Listeners si una condición es |
Se aplica a
Seguridad para subprocesos
Este tipo es seguro para la ejecución de subprocesos.