Classe Debug (C++/CLI)

Quando si usa Debug in un'applicazione Visual C++, il comportamento non cambia tra un debug e una build di versione.

Osservazioni:

Il comportamento di Trace è identico al comportamento per la classe Debug, ma dipende dal simbolo TRACE definito. Ciò significa che è necessario #ifdef qualsiasi codice correlato alla traccia per impedire il comportamento di debug in una build di versione.

Esempio: esegue sempre istruzioni di output

Descrizione

L'esempio seguente esegue sempre le istruzioni di output, indipendentemente dal fatto che si compili con /DDEBUG o /DTRACE.

Codice

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

Output

    Entering Main
Hello World.
    Exiting Main
test

Esempio: Usare direttive #ifdef e #endif

Descrizione

Per ottenere il comportamento previsto, ovvero nessun output di "test" stampato per una build di versione, è necessario usare le #ifdef direttive e #endif . L'esempio di codice precedente viene modificato di seguito per illustrare questa correzione:

Codice

// 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
}

Vedi anche

Programmazione .NET con C++/CLI (Visual C++)