Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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
}