Debug (Clase) (C++/CLI)

Al usar Depurar en una Visual C++, el comportamiento no cambia entre una depuración y una compilación de versión.

Comentarios

El comportamiento de Trace es idéntico al comportamiento de la clase Debug, pero depende del símbolo TRACE que se está definindo. Esto significa que debe usar cualquier código relacionado con seguimiento #ifdef para evitar el comportamiento de depuración en una compilación de versión.

Ejemplo: Siempre ejecuta instrucciones de salida

Descripción

En el ejemplo siguiente siempre se ejecutan las instrucciones de salida, independientemente de si se compila con /DDEBUG o /DTRACE.

Código

// mcpp_debug_class.cpp
// compile with: /clr
#using <system.dll>
using namespace System::Diagnostics;
using namespace System;

int main() {
   Trace::Listeners->Add( gcnew TextWriterTraceListener( Console::Out ) );
   Trace::AutoFlush = true;
   Trace::Indent();
   Trace::WriteLine( "Entering Main" );
   Console::WriteLine( "Hello World." );
   Trace::WriteLine( "Exiting Main" );
   Trace::Unindent();

   Debug::WriteLine("test");
}

Resultados

    Entering Main
Hello World.
    Exiting Main
test

Ejemplo: Usar directivas #ifdef y #endif directivas

Descripción

Para obtener el comportamiento esperado (es decir, ninguna salida de "prueba" impresa para una compilación de versión), debe usar las #ifdef#endif directivas y . El ejemplo de código anterior se modifica a continuación para mostrar esta corrección:

Código

// mcpp_debug_class2.cpp
// compile with: /clr
#using <system.dll>
using namespace System::Diagnostics;
using namespace System;

int main() {
   Trace::Listeners->Add( gcnew TextWriterTraceListener( Console::Out ) );
   Trace::AutoFlush = true;
   Trace::Indent();

#ifdef TRACE   // checks for a debug build
   Trace::WriteLine( "Entering Main" );
   Console::WriteLine( "Hello World." );
   Trace::WriteLine( "Exiting Main" );
#endif
   Trace::Unindent();

#ifdef DEBUG   // checks for a debug build
   Debug::WriteLine("test");
#endif   //ends the conditional block
}

Consulte también

Programación de .NET con C++/CLI (Visual C++)