Debug-Klasse (C++/CLI)Debug Class (C++/CLI)

Wenn Sie Debug in einer Visual C++ Anwendung verwenden, ändert sich das Verhalten nicht zwischen einem Debug-und einem Releasebuild.When using Debug in a Visual C++ application, the behavior does not change between a debug and a release build.

BemerkungenRemarks

Das Verhalten für Trace ist identisch mit dem Verhalten der Debug-Klasse, hängt jedoch von der definierten Symbol Ablauf Verfolgung ab.The behavior for Trace is identical to the behavior for the Debug class, but is dependent on the symbol TRACE being defined. Dies bedeutet, dass Sie #ifdef alle Ablauf Verfolgungs bezogenen Codes benötigen, um das Debugverhalten in einem Releasebuild zu verhindern.This means that you must #ifdef any Trace-related code to prevent debug behavior in a release build.

Beispiel: führt immer Ausgabe Anweisungen ausExample: Always executes output statements

BESCHREIBUNGDescription

Im folgenden Beispiel werden immer die OUTPUT-Anweisungen ausgeführt, unabhängig davon, ob Sie mit /DDEBUG oder /DTracekompilieren.The following sample always executes the output statements, regardless of whether you compile with /DDEBUG or /DTRACE.

CodeCode

// 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");
}

AusgabeOutput

    Entering Main
Hello World.
    Exiting Main
test

Beispiel: Verwenden von #ifdef und #endif DirektivenExample: Use #ifdef and #endif directives

BESCHREIBUNGDescription

Um das erwartete Verhalten (d. h. keine "Test Ausgabe" für einen Releasebuild gedruckt) zu erhalten, müssen Sie die #ifdef -Direktive und die- #endif Direktive verwenden.To get the expected behavior (that is, no "test" output printed for a release build), you must use the #ifdef and #endif directives. Das vorherige Codebeispiel wurde unten geändert, um diese Lösung zu veranschaulichen:The previous code sample is modified below to demonstrate this fix:

CodeCode

// 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
}

Siehe auchSee also

.NET-Programmierung mit C++/CLI (Visual C++).NET Programming with C++/CLI (Visual C++)