Clase Debug en Visual C++

Actualización: noviembre 2007

Cuando se utiliza Debug en una aplicación de Visual C++, el comportamiento no cambia entre una depuración y una versión de lanzamiento.

Comentarios

El comportamiento para Trace es idéntico al comportamiento para la clase Debug, pero depende del símbolo TRACE que se defina. Es decir, debe aplicarse #ifdef al código relacionado con Trace para evitar un comportamiento de depuración en una versión de lanzamiento.

Ejemplo

Descripción

El ejemplo siguiente siempre ejecuta las instrucciones de salida, independientemente de que la compilación se realice 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");
}

Resultado

    Entering Main
Hello World.
    Exiting Main
test

Ejemplo

Descripción

Para obtener el comportamiento esperado (es decir, que no se imprima "test" en una versión de lanzamiento), deben utilizarse las directivas #ifdef y #endif. A continuación modificamos el ejemplo de código anterior para mostrar la 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
}

Vea también

Otros recursos

Guía de programación de .NET