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
}