c# - ver - Romper hilo único
la depuración de scripts de chrome en visual studio está habilitada (5)
Configure un contador que haga un uno por cada subproceso creado y luego establezca su punto de interrupción para interrumpir una condición y elija un valor para ese contador. No creo que esto funcione en todos los casos, especialmente PLINQ, pero debería ser factible en muchas situaciones.
¿Es posible romper un solo hilo en Visual Studio, mientras que otros hilos continuarán su ejecución?
Tengo un hilo de fondo que hace un simple envío / recepción de datos, lo que me gustaría que sucediera, mientras paso a través de mi código en otro hilo.
Generalmente es imposible, pero hay algunas cosas que podrían funcionar para escenarios específicos.
Solución básica Como se mencionó en otra parte, repetir la secuencia: Congelar, Reanudar, (esperar), Pausa, Descongelar, Paso debe dar como resultado el comportamiento que describe, dando a otros subprocesos la posibilidad de ejecutarse en segundo plano mientras se detiene el subproceso objetivo.
Este enfoque tiene al menos dos problemas:
- Es bastante tedioso
- Sus hilos de fondo se suspenderán cada vez que el depurador esté en pausa.
Mejoras
El primer problema se puede abordar con un procedimiento diferente: Thread.Sleep(10000)
un Thread.Sleep(10000)
en la ventana Inmediato, manteniendo el hilo enfocado ocupado mientras que los otros hilos se ejecutan normalmente. Incluso podrías vincular ese comando a una macro.
El segundo problema solo puede abordarse con un enfoque que no necesite detener al depurador. Pero, ¿cómo examinaríamos el estado cuando la sesión no está en pausa? Ahí es donde entra IntelliTrace , pero es posible que necesite crear eventos personalizados de IntelliTrace . El inconveniente de este enfoque es que no puede modificar manualmente el estado en pleno vuelo.
Siempre puedes poner un punto de interrupción condicional en función de una propiedad de tu hilo actual (como el nombre o la identificación).
También puede encontrar esto útil: http://www.codeproject.com/Tips/396617/Conditional-Breakpoint-using-Make-Object-Id-featur
Esto funcionó para mí en el VS2008 y debería funcionar de manera similar en 2010 como mínimo
Todo lo que puedo encontrar a esto, es que puede cambiar el comportamiento en un nivel de proceso por la configuración
- Herramientas - Opciones - Depuración - General - Interrumpa todos los procesos cuando se interrumpe un proceso
pero no en una base de hilo.
abra la vista de hilos (Depurar-> Windows-> Hilos), haga clic derecho en el hilo que desea suspender, seleccione ''Congelar''. Seleccione ''Descongelar'' para volver a ponerlo en un estado de ejecución.