Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
При использовании Debug в приложении Visual C++ поведение не изменяется между отладкой и сборкой выпуска.
Замечания
Поведение для Trace класса Debug идентично поведению, но зависит от определяемого символа TRACE. Это означает, что необходимо #ifdef использовать любой код, связанный с трассировкой, чтобы предотвратить поведение отладки в сборке выпуска.
Пример. Всегда выполняет выходные инструкции
Описание
Следующий пример всегда выполняет выходные инструкции независимо от того, компилируется ли вы с /DDEBUG или /DTRACE.
Код
// 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");
}
Выходные данные
Entering Main
Hello World.
Exiting Main
test
Пример. Использование директив #ifdef и #endif
Описание
Чтобы получить ожидаемое поведение (т. е. выходные данные теста, напечатанные для сборки выпуска), необходимо использовать #ifdef и #endif директивы. Предыдущий пример кода изменен ниже, чтобы продемонстрировать это исправление:
Код
// 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
}