Debug (Clase) (C++/CLI)

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

ms235216.collapse_all(es-es,VS.110).gifDescripción

El ejemplo siguiente siempre ejecuta las instrucciones de salida, independientemente de que la compilación se realice con /DDEBUG o /DTRACE.

ms235216.collapse_all(es-es,VS.110).gifCó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");
}

ms235216.collapse_all(es-es,VS.110).gifOutput

    Entering Main
Hello World.
    Exiting Main
test

Ejemplo

ms235216.collapse_all(es-es,VS.110).gifDescripció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:

ms235216.collapse_all(es-es,VS.110).gifCó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

.NET que programa en Visual C++