2010-03-24 11 views

Respuesta

4

Claro, por defecto rastrea escrituras a la ventana de Salida usando el DefaultTraceListener, que es una implementación de la clase TraceListener.

escribir en una salida separada que necesita para cualquiera que use uno de los pre-suministrado alternativa TraceListener s o implementar su propio (manipulación, como mínimo, Write() y WriteLine(); a continuación, registrar su oyente en su archivo de configuración.

+0

He hecho esto en el pasado, es muy útil. Sin embargo, en este caso, estoy hablando de la ventana acoplable de "Salida" de Visual Studio. Sería bueno supervisar los mensajes de Consola, Depuración y Rastreo por separado en lugar de que todos sean volcados a esa única ventana (con los mensajes de excepción de carga de ensamblaje y primera oportunidad allí también). – Pwninstein

+0

Sí, de modo que podría escribir un plugin de Visual Studio para proporcionar ventanas separadas para cada una, junto con TraceListeners personalizados para enviar la salida a su complemento. Sin embargo, de forma predeterminada, 'DefaultTraceListener' escribe exclusivamente en la ventana' Output' y Visual Studio lo agrega a la colección Listeners de la aplicación, por lo que no hay forma de apuntar y hacer clic para lograr lo que quiere – STW

+1

Puede simplemente 'desactivar' la carga del ensamblaje y la excepción de la primera oportunidad de ser volcada en la ventana de salida de depuración. Simplemente haga clic con el botón derecho en esa ventana y en la parte inferior del menú emergente, verá opciones para desactivar la visualización de excepciones y cargar y descargar mensajes del módulo. –

2

Solo hay una opción disponible en VS para obtener resultados en una ventana diferente: Herramientas + Opciones, Depurador, General, "Redirigir todo el texto de la ventana de salida a la ventana Inmediato". Sin embargo, es poco probable que haga lo que usted quiere Qué hacer.

No hay buenas opciones disponibles para obtener resultados en una ventana VS. El único mecanismo es el Windows Outp Función de API utDebugString() que permite que el depurador vea los mensajes. Eso ya está siendo utilizado por DefaultTraceListener. El proceso de alojamiento de Visual Studio admite la redirección de Console.Write/Line() a la ventana de resultados. El mecanismo por el que funciona no está claro para mí, aparte de que el proceso de alojamiento es una versión alojada personalizada del CLR. No es algo que te gustaría abordar, suponiendo que incluso es posible reemplazarlo.

Con mucho, el enfoque más práctico es simplemente crear su propia ventana para mostrar la salida de rastreo, utilizando su propio oyente de rastreo. Lo suficientemente fácil de hacer con una clase de formulario de Windows Forms que contiene un cuadro de texto multilínea. Cuán práctico es eso depende de la naturaleza de su EXE principal. O trace a un archivo y use un visor de archivos que sea lo suficientemente inteligente como para ver actualizaciones del archivo. Yo uso Far.

Ah, y está SysInternals 'DebugView utility. Se fisgonea en el texto OutputDebugString().

Cuestiones relacionadas