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
}