Este va a ser un microArtículo en el que os voy a comentar cómo depurar componentes en tiempo de diseño.
A veces, si no tenemos cuidado, al desarrollar componentes podemos encontrarnos con comportamientos no deseados en tiempo de diseño, y no saber qué puede estar causándolos. Para arrojar un poco de luz sobre qué puede estar causando el error, podemos depurar nuestros controles en tiempo de diseño.
¿Cómo?
Es muy sencillo. Supongamos que tenemos abierto una instancia de Visual Studio, donde estamos desarrollando nuestro componente. Hemos de abrir una segunda instancia de Visual Studio. Desde esta segunda instancia depuraremos nuestro componente en tiempo de diseño. Para ello, vamos al menú Herramientas (Tools) y seleccionamos la opción «Procesos de depuración…» (Debug processes…), como en el artículo anterior.
En esta ocasión, el proceso a depurar es el devenv.exe (el propio Visual Studio). Aseguraos de escoger el proceso cuyo título coincida con aquél en el que estáis desarrollando el componente. Además, en la columna Tipo («Type») deberá aparecer «.NET» (también podrá poner Win32, y puede que alguna otra cosa). En la ventana en la que nos indica qué queremos depurar, aseguraos de que está marcada la opción «Common Language Runtime» (es decir, que queremos depurar código .NET)
Tras esperar un (más o menos largo) momento a que el depurador haya cargado toda la información (dlls, pdbs y demás), abrimos el fichero con el código del componente (directamente, sin abrir el proyecto, sólo el fichero con la clase que nos interesa), y empezamos a poner puntos de interrupción (Breakpoints). Una vez estemos preparados, pasamos a la primera instancia de Visual Studio .NET, y abrimos (o usamos) el componente en tiempo de diseño. En el momento que alcance alguno de nuestros puntos de interrupción, podremos empezar a depurar tranquilamente 😉
Un consejo: Puede ser interesante el cambiar la configuración de las excepciones en la segunda instancia del Visual Studio, de manera que en el momento en el que se lance una excepción (sea manejada o no) se interrumpa la ejecución para poder depurar. Esto se puede hacer en el menú Depuración, seleccionamos Excepciones. En la ventana que aparece, seleccionar las excepciones del CLR, y en los radio buttons que aparecen abajo, marcad «Break Into The Debugger» tanto para las excepciones manejadas como para las lanzadas.
Pues eso es todo por hoy.
Saludos!