El siguiente programa C # (construido con csc hello.cs
) imprime solo Hello via Console!
en la consola y Hello via OutputDebugString
en la ventana DebugView. Sin embargo, no puedo ver ninguna de las System.Diagnostics.*
llamadas. ¿Porqué es eso?
using System;
using System.Runtime.InteropServices;
class Hello {
[DllImport("kernel32.dll", CharSet=CharSet.Auto)]
public static extern void OutputDebugString(string message);
static void Main() {
Console.Write( "Hello via Console!" );
System.Diagnostics.Debug.Write( "Hello via Debug!" );
System.Diagnostics.Trace.Write( "Hello via Trace!" );
OutputDebugString( "Hello via OutputDebugString" );
}
}
¿Tal vez se requieren algunos interruptores especiales de línea de comandos csc
?
No estoy usando Visual Studio para ninguno de mis desarrollos, esto es puro material de línea de comandos.
Respuestas:
Como otros han señalado, los oyentes deben estar registrados para poder leer estas transmisiones. También tenga en cuenta que
Debug.Write
solo funcionará si seDEBUG
establece el indicador de compilación, mientrasTrace.Write
que solo funcionará si seTRACE
establece el indicador de compilación.La configuración de los indicadores
DEBUG
y / oTRACE
se realiza fácilmente en las propiedades del proyecto en Visual Studio o al proporcionar los siguientes argumentos a csc.exefuente
Si bien la depuración
System.Diagnostics.Debug.WriteLine
se mostrará en la ventana de salida ( Ctrl+ Alt+ O), también puede agregar unTraceListener
a laDebug.Listeners
colección para especificarDebug.WriteLine
llamadas a la salida en otras ubicaciones.Nota: es
Debug.WriteLine
posible que las llamadas no se muestren en la ventana de salida si tiene la opción de Visual Studio "Redirigir todo el texto de la ventana de salida a la ventana Inmediato" marcada en el menú Herramientas → Opciones → Depuración → General . Para mostrar " Herramientas → Opciones → Depuración ", marque la casilla junto a " Herramientas → Opciones → Mostrar todas las configuraciones ".fuente
Debe agregar un
TraceListener
para verlos aparecer en la consola.También aparecen en la ventana de resultados de Visual Studio cuando están en modo de depuración.
fuente
OutputDebugString()
y (kernel)DbgPrint().
Debug.Write()
si su configuración de captura incluye "Global Win32", lo que requiere ejecutarlo en modo Admin.Mientras está depurando en Visual Studio, visualice la ventana "Salida" (Ver-> Salida). Se mostrará allí.
fuente
Los mensajes de diagnóstico se muestran en la ventana de salida.
fuente
Cuando escribo debug.write ("") en el código, en la "Ventana inmediata", no en la "Ventana de salida".
Puedes probarlo. Para mostrar la ventana "Inmediato" ( Depuración → Ventana → Inmediato ).
fuente
La solución para mi caso es:
fuente
Para VB.NET se aplica lo siguiente. Debe seleccionar "Depurar" Y asegurarse de que "Iniciar depuración". Esto se puede alcanzar presionandoF5 .
Además, Console.WriteLine solo mostrará mensajes al compilar como "Release" en su ventana de Salida.
Como se mencionó anteriormente, abra la ventana Salida con Ver → Salida Y asegúrese de seleccionar "Construir" si desea ver los mensajes Console.WriteLine o "Depurar" si desea ver los mensajes Debug.WriteLine o Trace.WriteLine.
fuente