Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés
Esta documentación está archivada y no tiene mantenimiento.

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.

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.

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

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
}
Mostrar: