Classe de débogage (C++/CLI)

Lors de l’utilisation Debug dans une application Visual C++, le comportement ne change pas entre un débogage et une build de mise en production.

Notes

Le comportement pour Trace lequel il est identique au comportement de la classe Debug, mais dépend du symbole TRACE défini. Cela signifie que vous devez #ifdef tout code lié à la trace pour empêcher le comportement de débogage dans une build de mise en production.

Exemple : Toujours exécuter des instructions de sortie

Description

L’exemple suivant exécute toujours les instructions de sortie, que vous compilez avec /DDEBUG ou /DTRACE.

Code

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

Sortie

    Entering Main
Hello World.
    Exiting Main
test

Exemple : Utiliser des directives #ifdef et #endif

Description

Pour obtenir le comportement attendu (autrement dit, aucune sortie « test » imprimée pour une build de mise en production), vous devez utiliser les directives et #endif les #ifdef directives. L’exemple de code précédent est modifié ci-dessous pour illustrer ce correctif :

Code

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

Voir aussi

Programmation .NET avec C++/CLI (Visual C++)