Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Saat menggunakan Debug dalam aplikasi Visual C++, perilaku tidak berubah antara debug dan build rilis.
Keterangan
Perilaku untuk Trace identik dengan perilaku untuk kelas Debug, tetapi tergantung pada simbol TRACE yang didefinisikan. Ini berarti Anda harus #ifdef memiliki kode terkait Jejak untuk mencegah perilaku debug dalam build rilis.
Contoh: Selalu menjalankan pernyataan output
Deskripsi
Sampel berikut selalu menjalankan pernyataan output, terlepas dari apakah Anda mengkompilasi dengan /DDEBUG atau /DTRACE.
Kode
// 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");
}
Hasil
Entering Main
Hello World.
Exiting Main
test
Contoh: Gunakan direktif #ifdef dan #endif
Deskripsi
Untuk mendapatkan perilaku yang diharapkan (yaitu, tidak ada output "pengujian" yang dicetak untuk build rilis), Anda harus menggunakan arahan #ifdef dan #endif . Sampel kode sebelumnya dimodifikasi di bawah ini untuk menunjukkan perbaikan ini:
Kode
// 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
}