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 une version de débogage et une version release.

Remarques

Le comportement vis-à-vis de Trace est identique à celui vis-à-vis de la classe Debug, mais dépend du symbole TRACE défini. Cela signifie que vous devez appliquer #ifdef au code lié à Trace pour éviter un comportement debug dans une version release.

Exemple

Description

L'exemple suivant exécute toujours les instructions de sortie, que vous effectuez une compilation 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

Description

Pour obtenir le comportement attendu (autrement dit, pas de sortie "test" imprimée pour une version release), 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

Autres ressources

Programmation .NET dans Visual C++