Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Bei Verwendung von Debug in einer Visual C++-Anwendung gibt es zwischen einem Debugbuild und einem Releasebuild keinen Unterschied im Verhalten.
Hinweise
Das Verhalten von Trace ist mit dem Verhalten der Debug-Klasse identisch, hängt jedoch davon ab, ob das Symbol TRACE definiert wurde.Dies bedeutet, dass Sie für Trace-bezogenen Code stets #ifdef verwenden müssen, um das Debugverhalten in einem Releasebuild zu verhindern.
Beispiel
Beschreibung
Im folgenden Beispiel werden immer die Ausgabeanweisungen ausgeführt, unabhängig davon, ob Sie mit /DDEBUG oder /DTRACE kompilieren.
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");
}
Output
Entering Main
Hello World.
Exiting Main
test
Beispiel
Beschreibung
Um das erwartete Verhalten zu erzielen (d. h. keine Ausgabe von "test" im Releasebuild), müssen Sie die #ifdef-Direktive und die #endif-Direktive verwenden.Im Folgenden finden Sie zur Veranschaulichung dieser Korrektur das oben stehende Codebeispiel mit den entsprechenden Änderungen:
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
}