10

Estoy usando VS2010 Beta 2 para depurar algunos códigos de subprocesos múltiples. Amo las pilas paralelas, etc.Congelar todos los hilos en el punto de corte en VS2010

Tengo una pregunta, sin embargo: Tengo un punto de interrupción configurado en un método que puede ser llamado por múltiples hilos. Una vez que llegue al punto de ruptura, realmente quiero mantener el foco en el hilo que desencadenó ese punto crítico. Sin embargo, cuando toco "paso", VS a menudo cambia a otro hilo (digamos que estoy detenido en el hilo 1, pero mientras tanto, el hilo 2 toca mi punto de corte).

Sé que puedo congelar manualmente subprocesos en la ventana de subprocesos. ¿Hay alguna manera de hacerlo automáticamente? Básicamente, una vez que llegue a un punto de interrupción, congelar todos los hilos, excepto el actual, hasta que toque F-5.

+0

¡Sí, tal hastle, especialmente si tienes muchos hilos paralelos! Tal vez tenga en cuenta el threadID como dijo Kragen, y use "Run to cursor" para pasar a la siguiente línea. Si un hilo toca la línea y su threadID no es el que usted rastrea, repita "ejecutar al cursor" hasta que obtenga el hilo deseado. Al menos VS no saltará por todo el show y seguirás perdiendo el foco. – Llyle

Respuesta

2

No es que yo sepa, sin embargo, puede deshabilitar su punto de interrupción mientras atraviesa.

Cuando estoy preocupado por confundir muchos hilos, tiendo a mantener abierta la ventana de hilos y anotar la identificación del hilo.

2

Si carga la ventana de Hilos de Debug-> Windows-> Threads ... Una vez que llega a un punto de quiebre, puede seleccionar todos los hilos y hacer clic en "Freeze Threads" para reanudar el hilo activo, seleccionarlo y eligiendo "Deshelar hilos".

Esto permitirá que solo el hilo actual se ejecute en el depurador.

11

Acabo de lanzar una extensión de Visual Studio 2010 que hace exactamente lo que está buscando. Y es gratis :).

Presentación

Este Visual Studio 2010 extensión agrega dos accesos directos y botones de la barra para permitir a los desarrolladores centrarse fácilmente en hilos individuales, mientras que la depuración de aplicaciones multihilo.

Reduce drásticamente la necesidad de acceder manualmente a la ventana de subprocesos para congelar/descongelar todos los hilos, pero el que se debe seguir y, por lo tanto, ayuda a mejorar la productividad.

Características

restringir aún más la ejecución para el hilo actual. Congelará todos los otros hilos. Atajo: CTRL + T + T o botón copo de nieve. Cambia al siguiente hilo individual (basado en ID). Cambiará el hilo actual y congelará todos los otros hilos. Atajo: CTRL + T + J o botón Siguiente.

Check it out here on the Gallery, en el official page o la Codeplex repository.

+0

¡Lo comprobaré! ¡Gracias! – JMarsch

Cuestiones relacionadas