Debug (Clase) (C++/CLI)Debug Class (C++/CLI)

Cuando se usa Debug en una aplicación de Visual C++, el comportamiento no cambia entre una depuración y una versión de lanzamiento.When using Debug in a Visual C++ application, the behavior does not change between a debug and a release build.

ComentariosRemarks

El comportamiento de Trace es idéntico al comportamiento de la clase Debug, pero depende del símbolo TRACE que se está definiendo.The behavior for Trace is identical to the behavior for the Debug class, but is dependent on the symbol TRACE being defined. Esto significa que hay que #ifdef cualquier código relacionado con el seguimiento para evitar el comportamiento de depuración en una versión de lanzamiento.This means that you must #ifdef any Trace-related code to prevent debug behavior in a release build.

EjemploExample

DescripciónDescription

El ejemplo siguiente ejecuta siempre las instrucciones de salida, independientemente de si se compila con /DDEBUG o /DTRACE.The following sample always executes the output statements, regardless of whether you compile with /DDEBUG or /DTRACE.

CódigoCode

// 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");
}

SalidaOutput

    Entering Main
Hello World.
    Exiting Main
test

EjemploExample

DescripciónDescription

Para obtener el comportamiento esperado (es decir, que no se imprima "probar" para una versión de lanzamiento), debe usar el #ifdef y #endif directivas.To get the expected behavior (that is, no "test" output printed for a release build), you must use the #ifdef and #endif directives. Para demostrar esta corrección, el anterior ejemplo de código se modifica a continuación:The previous code sample is modified below to demonstrate this fix:

CódigoCode

// 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énSee also

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