Condividi tramite


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

ms235216.collapse_all(it-it,VS.110).gifDescrizione

Nell'esempio riportato di seguito vengono sempre eseguite le istruzioni di output, indipendentemente dal fatto che la compilazione venga effettuata con /DDEBUG o /DTRACE.

ms235216.collapse_all(it-it,VS.110).gifCodice

// 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(it-it,VS.110).gifOutput

    Entering Main
Hello World.
    Exiting Main
test

Esempio

ms235216.collapse_all(it-it,VS.110).gifDescrizione

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:

ms235216.collapse_all(it-it,VS.110).gifCodice

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

programmazione.NET di Visual C++