22/8/2009 17:04 El Bruno

[VSTS2010] Nuevas herramientas para la depuración de aplicaciones MultiThreading y otras yerbas

Buenas,

aquellos que alguna vez hayan tenido que desarrollar aplicaciones multithreading seguramente coincidirán que la tecnología es peligrosa muy potente, pero el IDE de Visual Studio 2008 era un poco pobre para la depuración de estas aplicaciones.

Disclaimer: no quiero animar a nadie a empezar a crear miles de threads a cascoporro con 2 líneas de código, siempre he opinado que la decisión de utiilzar threads para gestionar algo en una aplicación debe ser una de las últimas opciones. Este tipo de soluciones, sino están bien implementadas suelen traer más problemas que beneficios.

Desde hace un tiempo sigo en el blog de The Moth (Daniel Moth) una serie de artículos muy interesantes sobre este tema. Y una de las cosas que más me ha llamado la atención son 2 nuevos paneles en el IDE de Visual Studio que nos ayudan en la depuración en estos escenarios: Parallel Tasks y Parallel Stacks.

image

Partiendo de un ejemplo de Daniel y deteniendo una aplicación en tiempo de ejecución, podemos ver que ambos paneles muestran información más que interesante.

En la ventana Parallel Tasks es posible visualizar las tareas en ejecución, las tareas programadas, y las tareas que están en espera de ser reactivadas.

image

Además para cada elemento podemos congelar una tarea, cambiar el contexto a la misma o congelar todas las tareas menos una en particular.

image

En la ventana Parallel Stacks, es posible ver de forma gráfica los threads en ejecución y la relación entre los mismos (lo que conocemos como Call Stack, pero de forma gráfica). Además aprovechando la potencia de WPF, podemos gestionar el zoom en este diagrama para ver en mayor o menor detalle, el panorama global de ejecución.

image

Todavía no me alcanzan las palabras para describir lo importante que puede ser esto en depuraciones realmente complejas. Y si bien no funciona con el Historical Debugging (es mucho pedir ya lo sé, pero pedir es gratis) creo que puede ser de gran ayuda para estabilizar esas aplicaciones un poco raras que andan dando vueltas por alli y para terminar de comprender como funcionan estas aplicaciones.

image

 

Saludos @ Rio IV

El Bruno

Archivado en: ,,
Comparte este post:

# re: [VSTS2010] Nuevas herramientas para la depuración de aplicaciones MultiThreading y otras yerbas

Sunday, August 23, 2009 7:36 AM by José Ignacio Merino

Bruno,

disiento contigo en que el uso de threads para gestionar algo debe ser algo de último recurso.

Cada vez los procesadores tienen más y más núcleos. Actualmente tenemos procesadores con 2 núcleos y donde cada núcleo puede tener 2 procesos de ejecución simultáneos.

En 5 años tendremos procesadores de 8 núcleos en los portátiles y podremos tener perfectamente 16 procesos simultáneos de ejecución.

Si me dices que con este panorama los hilos deben ser el último recurso del programador...

Aunque sea complejo y difícil de depurar, creo que la programación multihilo debe ser una prioridad en el desarrollo de apliaciones.

Por ejemplo, en mis aplicaciones tener 4-5 hilos corriendo simultáneamente es algo normal. Tampoco es que me lo proponga, pero me sale así de forma natural.

# re: [VSTS2010] Nuevas herramientas para la depuración de aplicaciones MultiThreading y otras yerbas

Sunday, August 23, 2009 6:39 PM by El Bruno

Jose buenas

tal vez sea la cantidad de bloqueos entre threads, las Red X en aplicaciones Windows y otro monton de cosillas las que me han hecho asignarles un nivel de respeto muy alto al diseño de aplicaciones multithreading.

Tienes toda la razón del mundo en que los recursos que poseemos actualmente y los que vienen, ofrecen muchas capacidades para este tipo de soluciones; y es por esto que agradezco que VS2010 incorpore este tipo de herramientas; pero agradecería mucho más que dentro del FWK no sea tan fácil crear threads, usas queues, etc.

Como te comenté, mi problema viene por lo simple que es caer en un mal diseño con este tipo de herramientas. Y lo complicado que es solucionar esos problemas.

Finalmente, y como pedir es gratis, si es por mi; me gustaría que el FWK automáticamente implemente la gestion de operaciones sin necesidad de tener que gestionarlas a mano. Algo hace hoy, pero bueno ... si nos podemos sacar ese problema de arriba mejor.

Gracias por el comentario y suerte con tus hilos !!! :D

Saludos

# re: [VSTS2010] Nuevas herramientas para la depuración de aplicaciones MultiThreading y otras yerbas

Sunday, August 23, 2009 11:51 PM by José Ignacio Merino

¿Que gestione por mí las operaciones automáticamente? Nooooooo... Yo creo firmemente en las herramientas inteligentes, pero no en las que se pasan de listas...

Si ya de por sí puede ser un infierno una depuración en una aplicación multihilo, imagínate un error en una aplicación multihilo que tuviese delegada una gestión automática de todo en el framework o en las librarías usadas y no funciona como debería funcionar... Creo que te puedes hacer una idea de lo que supondría localizar un error no ya en tu código, sino en una librería del compilador o en un framework....

En mi tierra dicen "Señor, sávame de las aguas mansas que de las revueltas ya me salvo yo".

Si algún día el framework o la librería de compilador delegase de forma automática la gestión de hilos, eso pasa por poner bloqueos automáticos en todas y cada una de las variables no-locales que usemos con el impacto en rendimiento que eso supondría. Es decir, cada variable de nuestra aplicación tendría un Mutex asociado.

Supondría de golpe quitar toda posible optimización que pueda hacer el framework/compilador de almacenamiento de variables en registros.

Por mi parte es una estupenda noticia la mejora en depuración multihilo de Visual Studio. Estoy ya deseando probarlas porque la verdad que es un poco coñazo el depurar aplicaciones multihilo en el 2008.

Pero que no se pasen de frenada. Una cosa es hacer más simple la programación y otra cosa en querer que todo sea un Visual Basic 3.0 (con todos mis respetos para esa aplicación la cual usé en su día, pero no creo que a un buen programador con capacidad sobrada deba obligarsele a que el framework o compilador decida de forma automática lo que es mejor para su código).

# re: [VSTS2010] Nuevas herramientas para la depuración de aplicaciones MultiThreading y otras yerbas

Tuesday, August 25, 2009 7:20 PM by Julio Trujillo Leon

Muy buena aportación, nos animará la existencia de estas herramientas para migrar a VS 2010, pero como tu bien dices, solo si tenemos necesidad de paralelismo, no crearlo por crearlo

Un saludo Bruno

# [VSTS2010] Listado de Novedades (X)

Monday, September 21, 2009 6:39 PM by El Bruno

Buenas, y llegó el 10mo recopilatorio con los posts que voy escribiendo sobre las novedades de

# [VSTS2010] Listado de Novedades (XI)

Tuesday, December 22, 2009 11:03 AM by El Bruno

Buenas, 11vo recopilatorio con los posts que voy escribiendo sobre las novedades de Visual Studio 2010

# [VSTS2010] Listado de Novedades (XII)

Tuesday, January 19, 2010 1:46 PM by El Bruno

Buenas, nuevo recopilatorio con los posts que voy escribiendo sobre las novedades de Visual Studio 2010