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.
Wenn Sie Debug in einer Visual C++-Anwendung verwenden, ändert sich das Verhalten nicht zwischen einem Debug- und einem Release-Erstellen.
Hinweise
Das Verhalten für Trace ist identisch mit dem Verhalten für die Debug-Klasse, aber es ist abhängig davon, dass das Symbol TRACE definiert ist. Das bedeutet, dass Sie jeglichen mit Ablaufverfolgung auszuführenden Code #ifdef müssen, um Debuggen-Verhalten in einem Release zu verhindern.
Beispiel: Führt immer Ausgabebefehle aus
Beschreibung
Die folgende Stichprobe führt immer die Ausgabeanweisungen aus, 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: Verwenden Sie die #IFD- und #EIF-Anweisungen
Beschreibung
Um das erwartete Verhalten zu erhalten (das heißt, kein „testen“ der Ausgabe für ein Release erstellen), müssen Sie die #ifdef- und #endif-Anweisungen verwenden. Das Zurück-Codebeispiel wird unten modifiziert, um diesen Fix zu demonstrieren:
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
}