Aracılığıyla paylaş


Hata Ayıklama Sınıfı (C++/CLI)

Visual C++ uygulamasında kullanırken Debug , davranış hata ayıklama ve yayın derlemesi arasında değişmez.

Açıklamalar

için Trace davranışı Debug sınıfının davranışıyla aynıdır, ancak tanımlanan TRACE simgesine bağlıdır. Bu, bir yayın derlemesinde hata ayıklama davranışını önlemek için İzleme ile ilgili herhangi bir koda sahip olmanız gerektiği #ifdef anlamına gelir.

Örnek: Her zaman çıkış deyimlerini yürütür

Açıklama

Aşağıdaki örnek, /DDEBUG veya /DTRACE ile derlemenize bakılmaksızın her zaman çıkış deyimlerini yürütür.

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

Çıktı

    Entering Main
Hello World.
    Exiting Main
test

Örnek: #ifdef ve #endif yönergelerini kullanma

Açıklama

Beklenen davranışı elde etmek için (bir yayın derlemesi için "test" çıkışı yazdırılmaz), ve #endif yönergelerini #ifdef kullanmanız gerekir. Bu düzeltmeyi göstermek için önceki kod örneği aşağıda değiştirilmiştir:

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
}

Ayrıca bkz.

C++/CLI (Visual C++) ile .NET Programlama