2010-03-19 27 views
9

Estoy trabajando en un programa que utiliza el método System.Diagnostics.Debugger.Break() para permitir al usuario establecer un punto de interrupción desde la línea de comandos. Esto funcionó bien durante muchas semanas. Sin embargo, cuando estaba trabajando en la reparación de una prueba de unidad hoy, traté de usar el modificador de depuración de la línea de comandos, y no funcionó.System.Diagnostics.Debugger.Debug() dejó de funcionar

Aquí es lo que he intentado:

  • He confirmado que el método de depuración() realmente está siendo llamado (por poner un System.Console.WriteLine() después de él)
  • I' hemos confirmado que la construcción está todavía en depuración
  • que he hecho una generación limpia
  • he reiniciado Estudio Producto

una rápida búsqueda en Google didn No revela nada, y la documentación API para .Net no menciona nada acerca de que esta función no funciona correctamente. Entonces ... alguna idea?

Respuesta

17

Finalmente descubrí lo que estaba sucediendo. Por alguna razón, algo cambió en mi máquina, por lo que simplemente llamar a Debugger.Debug ya no era suficiente (aún no entiendo qué cambió). En cualquier caso, ahora puedo hacer que el depurador para llegar mediante el uso de:

if (Debugger.IsAttached == false) Debugger.Launch(); 
+0

Me he encontrado con este mismo problema al migrar de Visual Studio 2008 a Visual Studio 2010. 'Debugger.Break()' funcionó bien en VS2008; para VS2010, ahora estoy usando 'Debugger.Launch()'. –

+0

Lo mismo en VS2015 - Debugger.Break() no funcionó - Debugger.Launch() funcionó – chenop

0

¿Utiliza VS 2008 SP1? Tuve muchos problemas con la depuración en ese lanzamiento, y todos fueron resueltos con este Microsoft patch.

puntos de interrupción puesto en bucles o en funciones recursivas no se ven afectados en todos los procesos en cada iteración. Con frecuencia, algunos procesos pueden pasar a través de muchas iteraciones de un ciclo, ignorando el punto de interrupción, antes de que se detenga un proceso .

puntos de interrupción se ven afectados, pero no son visibles cuando se depura múltiples procesos en el Visual Studio depurador.

Hay otros problemas relacionados con la depuración también corregidos.

+0

Lo siento ... después de instalar el parche, sigo viendo el problema. :-( –

2

que estaba usando debugger.launch() método y que dejó de funcionar de repente. utilizando

if (Debugger.IsAttached == false) Debugger.Launch(); 

también no apareció el depurador. Traté de restablecer la configuración de mi estudio visual y ¡funcionó!

0

Extraído de aquí (MSDN) la nota siguiente:

A partir de net_v40_long, el tiempo de ejecución ya no ejerce un control estricto de lanzar el depurador para el M: Método System.Diagnostics.Debugger.break, pero en su lugar informa un error al subsistema Informe de errores de Windows (WER). WER proporciona muchas configuraciones para personalizar la experiencia de informe de problemas, por lo que muchos factores influirán en la forma en que WER responde a un error, como la versión del sistema operativo, proceso, sesión, usuario, máquina y dominio. Si tiene resultados inesperados al llamar al método M: System.Diagnostics.Debugger.Break, verifique la configuración de WER en su máquina.Para obtener más información sobre cómo personalizar WER, consulte WER Settingshttps: //msdn.microsoft.com/library/windows/desktop/bb513638.aspx. Si desea asegurarse de que el depurador se inicia independientemente de la configuración de WER, asegúrese de llamar al método M: System.Diagnostics.Debugger.Launch en su lugar.

Creo que explica el comportamiento detectado.

Cuestiones relacionadas