Oharra
Orrialde honetara sartzeak baimena behar du. Saioa hasteko edo direktorioak aldatzen saia zaitezke.
Orrialde honetara sartzeak baimena behar du. Direktorioak aldatzen saia zaitezke.
Cuando se usa Debug en una aplicación de Visual C++, el comportamiento no cambia entre una compilación de depuración y una de versión.
Comentarios
El comportamiento de Trace es idéntico al comportamiento de la clase Debug, pero depende del símbolo TRACE que se está definiendo. Esto significa que debe aplicar #ifdef a cualquier código relacionado con Trace para evitar el comportamiento de depuración en una compilación de versión.
Ejemplo: Siempre ejecuta instrucciones de salida
Descripción
En el ejemplo siguiente, siempre se ejecutan las instrucciones de salida, independientemente de si la compilación se realiza con /DDEBUG o con /DTRACE.
Código
// 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");
}
Salida
Entering Main
Hello World.
Exiting Main
test
Ejemplo: Uso de las directivas #ifdef y #endif
Descripción
Para obtener el comportamiento esperado (es decir, que no se imprima ninguna salida de "prueba" para una compilación de versión), debe usar las directivas #ifdef y #endif. El ejemplo de código anterior se modifica a continuación para mostrar esta corrección:
Código
// 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
}