Partager via


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

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

Remarques

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

Exemple : Exécution systématique des instructions de sortie

Descriptif

L’exemple suivant exécute toujours les instructions de sortie, que vous compiliez 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 : Utilisation des directives #ifdef et #endif

Descriptif

Pour obtenir le comportement attendu (autrement dit, aucune sortie « test » imprimée pour une build de mise en production), vous devez utiliser les directives #ifdef et #endif. 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++)