Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
När du använder Debug i ett Visual C++-program ändras inte beteendet mellan en debuggversion och en releaseversion.
Anmärkningar
Beteendet för Trace är identiskt med beteendet för felsökningsklassen, men är beroende av symbolen TRACE som definieras. Det innebär att du måste #ifdef spårningsrelaterad kod för att förhindra felsökningsbeteende i en release-version.
Exempel: Kör alltid utdatainstruktioner
Beskrivning
Följande exempel kör alltid utdatainstruktionerna, oavsett om du kompilerar med /DDEBUG eller /DTRACE.
Kod
// 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");
}
Utgång
Entering Main
Hello World.
Exiting Main
test
Exempel: Använda #ifdef- och #endif-direktiv
Beskrivning
För att få det förväntade beteendet (dvs. inga "test"-utdata som skrivs ut för en versionsversion) måste du använda direktiven #ifdef och #endif . Föregående kodexempel ändras nedan för att demonstrera den här korrigeringen:
Kod
// 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
}