Nuestro grupo especializado pasados ciertos días de investigación y recopilación de de datos, hemos dado con los datos necesarios, deseamos que todo este artículo sea de utilidad para tu trabajo.
Solución:
Esto es lo que hice:
-
Establezca un punto de interrupción condicional que sabía que solo tocaría el hilo que estaba buscando.
-
Una vez que llega el punto de interrupción y se encuentra en el subproceso que desea, en la ventana Subprocesos de Visual Studio (durante la depuración, Depurar -> Windows -> Subprocesos), control + A (para seleccionar todos los hilos), y luego control + haga clic en el hilo en el que se encuentra actualmente. Debe tener todos los subprocesos excepto el que desea depurar seleccionado.
- Haga clic con el botón derecho y elija “Congelar”.
Ahora, Visual Studio solo recorrerá el subproceso descongelado. Parece ser mucho más lento al hacer esto, presumiblemente porque tiene que recorrer todos los subprocesos congelados, pero trajo algo de cordura a mi depuración de subprocesos múltiples.
Congelar/Descongelar subprocesos es una forma incorrecta porque otros subprocesos no ejecutan ningún código.
La forma más correcta y útil es:
- Pulse Ctrl+A en la ventana de puntos de interrupción (seleccione todos los puntos de interrupción).
- Haga clic con el botón derecho y seleccione “Filtro…”.
- Ingrese “ThreadId = (id de hilo actual)”.
En estudio visual 2015 y más reciente, el proceso es similar:
- Pulse Ctrl+A en la ventana de puntos de interrupción (seleccione todos los puntos de interrupción).
- Haga clic con el botón derecho y seleccione “Configuración…”.
- Marque “Condiciones” y seleccione “Filtro” en el menú desplegable
- Ingrese “ThreadId = (id de hilo actual)”.
Entonces, todos los subprocesos se ejecutan, pero el depurador golpea solo el subproceso actual.
Acabo de lanzar una extensión de Visual Studio 2010+ que hace exactamente lo que está buscando. Y es gratis :).
Presentación
Esta extensión de Visual Studio agrega dos accesos directos y botones de la barra de herramientas para permitir que los desarrolladores se concentren fácilmente en subprocesos únicos mientras depuran aplicaciones de subprocesos múltiples.
Reduce drásticamente la necesidad de ir manualmente a la ventana Subprocesos para congelar/descongelar todos los subprocesos excepto el que debe seguirse y, por lo tanto, ayuda a mejorar la productividad.
Características
Restrinja la ejecución adicional solo al subproceso actual. Congelará todos los demás hilos. Atajo: CTRL+T+T o botón Copo de nieve. Cambiar al siguiente subproceso único (basado en ID). Cambiará el hilo actual y congelará todos los demás hilos. Atajo: CTRL+T+J o botón Siguiente.
Compruébalo aquí en la Galería, en la página oficial o en el repositorio de Github.
Si piensas que ha resultado útil este post, sería de mucha ayuda si lo compartieras con otros juniors y nos ayudes a extender este contenido.