2012-02-20 13 views
20

Al utilizarDebug.WriteLine muestra nada

using System.Diagnostics; 

y

Debug.WriteLine("Test"); 

haber ejecutar la aplicación, no "prueba" se puede ver en la salida. Pero si utilizo la función msgbox en su lugar, aparece msgbox, por lo que se alcanza la línea.

¿Estoy mirando en la ventana incorrecta o qué tengo que cambiar?

Estoy usando VC# Express.

+2

¿Cómo se llama "salida"? –

+1

por supuesto que está ejecutando su aplicación dentro del vs ide? ¿derecho? – Steve

+1

@Henk Holterman Output, muestra el resultado de "depuración" en la parte inferior. – Zurechtweiser

Respuesta

18

Hay dos causas posibles para este comportamiento

  • La aplicación está siendo compilado en modo de lanzamiento y la llamada Debug.WriteLine no está en el programa final
  • No hay un detector de rastreo en el programa y, por lo tanto, no es necesario enviar el mensaje

La forma más fácil de diagnosticar esta es cambiar el código para

#if DEBUG 
Console.WriteLine("the message"); 
#endif 

si se imprime entonces usted tiene un problema con la escucha de seguimiento, de lo contrario se está compilando en la versión

+0

Reemplacé Console.WriteLine ("el mensaje"); con MessageBox.Show ("Este es un mensaje"); y eso funcionó, así que el modo de depuración está activado. – Zurechtweiser

+0

La opción '--debug' del compilador de Mono C# (' mcs --debug') solo genera símbolos de depuración en el binario, pero no establece 'DEBUG' ni' TRACE'. Utilice 'mcs --debug -d: DEBUG -d: TRACE Program.cs' para' Debug.WriteLine() 'y relacionado con el trabajo. – Palec

2

Debug.WriteLine("Test"); debe mostrarse en la ventana de salida cuando se encuentre en el modo de depuración. Si desea depurar una aplicación en ejecución (modo de lanzamiento) puede usar Trace y eso se mostraría en eventos de Windows.

+0

que es donde estoy buscando. Salida, muestra el resultado de "depuración" en la parte inferior. – Zurechtweiser

+0

Actualicé la respuesta –

+2

@Sofian, a la derecha, sea cual sea el problema, la pregunta no merece un voto a la baja. En algún momento sucede. – Steve

5

Creo que "Debug.WriteLine()" escribe en la colección Listeners. Desde allí puede determinar dónde se escribirá la información de depuración. Por defecto, "Salida" debería estar donde aparece, pero si tiene problemas para ver la información, cree un oyente diferente para captar la información de depuración.

Aquí está el ejemplo de MSDN:

TextWriterTraceListener myWriter = new TextWriterTraceListener(System.Console.Out); 
Debug.Listeners.Add(myWriter); 
+0

Esto es correcto, tuve un en mi config que detenía esto – Sam

+0

Opté por 'System.Console.Error' en lugar de' System.Console.Out'. Los mensajes de depuración no se deben mezclar inseparablemente con la salida real; La redirección de salida me permite separarlos en mi configuración. – Palec

+0

['ConsoleTraceListener'] (https://msdn.microsoft.com/en-us/library/system.diagnostics.consoletracelistener.aspx) es una subclase minimalista de' TextWriterTraceListener' que solo proporciona constructores para una inicialización conveniente para los escritores de flujo estándar : 'new ConsoleTraceListener()' utiliza 'Console.Out',' new ConsoleTraceListener (true) 'utiliza' Console.Error'. [Ver su fuente.] (Https://referencesource.microsoft.com/#System/compmod/system/diagnostics/ConsoleTraceListener.cs) Por cierto, más adelante las llamadas 'Console.SetOut()' y 'Console.SetError()' hacen no influir en ellos – Palec

3

no estoy seguro cualquiera ha mencionado este motivo, pero si compilo en modo Depuración y luego simplemente ejecuto el programa (Ctrl + F5) en lugar de elegir Iniciar depuración (F5), tampoco veré el Debug.WriteLine.

lo que no es suficiente simplemente compilar en modo de depuración, también hay que depurar de forma activa el programa y no sólo ejecutarlo :)

+2

Correcto. Tienes que tener un depurador "adjunto" –

54

En Menú> Herramientas> Opciones> depuración> General:

  • Asegurar "Redirigir todo el texto ventana de salida a la ventana inmediata" no está marcada

en Propiedades del proyecto> Construir:

  • Configuración: Depuración
  • "Definir constante DEBUG" está marcada
  • "Definir constante TRACE" está marcada

En la ventana de resultados:

  • Mostrar salida de: Depuración
  • Haga clic derecho en la ventana de salida y asegúrese de que la "Salida del programa" esté marcada
+7

Casi un año después y esta respuesta sigue siendo impresionante. Después de haber desmarcado "Redirigir todo el texto de la ventana de salida a la ventana inmediata", mi Debug.WriteLine ("Texto"); comenzó a trabajar. – Neill

+0

"Asegurar" Redirigir todo el texto de la ventana de salida a la ventana inmediata "NO está marcado" es todo lo que tuve que hacer también. Es extraño que no recuerde haber tenido que hacer esto antes y funciona bien ... – eaglei22

+0

¡Fantástico! No estoy seguro de por qué "Redirigir todo el texto de la ventana de salida a la ventana inmediata" está marcado por defecto en vs2013. vs2015 no es. Es por eso que siempre me sorprendió por qué los proyectos mostraban huellas en el vs2015, pero no pude ver nada en el vs2013. – Louis

1

La respuesta es fácil. Es posible que presione ctrl + F5 lo que significa Arranque sin depuración. Simplemente presione F5 a Start Debugging modo.

enter image description here

0

Para cualquier persona buscando en Google: Si bien hay varias respuestas que apuntan a la eliminación de los oyentes en el archivo de configuración también cuidado con

<remove name="OPTIONSVerbHandler" /> 

en la sección

<handlers> 

Como esto también suprime la salida de depuración.

0

En caso de que alguna de las otras respuestas no funcione. Trate de colocar un punto de quiebre en la línea Debug.WriteLine y vea si está siendo golpeado.

En caso de que no se golpee el motivo se debe a que se está ejecutando una versión anterior del código.

Para solucionar este problema, compruebe primero esta

Source

Vaya a Herramientas-Opciones

Proyectos y solución bajo -> Construir y ejecutar seleccionar "Siempre construir" en "On Run , cuando los proyectos están desactualizados "

enter image description here

Y compruebe si los archivos temporales están limpios.Compruebe esto SO Question

Esto funcionó para mí.

Si incluso esto falla, intente reiniciar VS. Trabaja la mayor parte del tiempo.

Cuestiones relacionadas