Classe Debug (C++/CLI)

Quando si utilizza Debug in un'applicazione Visual C++, non esistono differenze di comportamento tra la build di debug e quella di rilascio.

Note

Il comportamento per Trace è identico a quello per la classe Debug, ma dipende dalla definizione del simbolo TRACE in corso di definizione. È pertanto necessario aggiungere #ifdef a qualsiasi codice correlato a Trace per evitare il comportamento di debug in una build di rilascio.

Esempio

Descrizione

Nell'esempio riportato di seguito vengono sempre eseguite le istruzioni di output, indipendentemente dal fatto che la compilazione venga effettuata 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

Descrizione

Per ottenere il comportamento previsto, ovvero nessun output "test" stampato per una build di rilascio, utilizzare le direttive #ifdef e #endif. L'esempio di codice precedente viene modificato di seguito per illustrare la 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
}

Vedere anche

Altre risorse

.Guida per programmatori .NET