Cuántas veces nos hemos preguntado ya sea por curiosidad o por pura necesidad lo que está ejecutando el .Net Framework mientras depuramos una de nuestras aplicaciones. Pues bien, desde no hace mucho, ya está disponible parte del código fuente del Framework, la cual cosa nos brinda la posibilidad de ver lo que hace nuestro querido Framework ‘entre bambalinas’.
Esta funcionalidad está disponible para Visual Studio 2008 y sólo incluye algunos ensamblados, de momento los que podemos depurar son los siguientes:
- Mscorlib.DLL
- System.DLL
- System.Data.DLL
- System.Drawing.DLL
- System.Web.DLL
- System.Web.Extensions.DLL
- System.Windows.Forms.DLL
- System.XML.DLL
- WPF (UIAutomation*.dll, System.Windows.DLL, System.Printing.DLL, System.Speech.DLL, WindowsBase.DLL, WindowsFormsIntegration.DLL, Presentation*.dll, otros…)
- Microsoft.VisualBasic.DLL
Pasemos ahora a explicar cómo realizar la depuración, primero debéis instalar los últimos updates del Visual Studio 2008, en mi caso, utilicé un VS2008 Professional con los últimos hotfixes, recalcando uno de ellos, el KB944899. Aquí tenéis el enlace:
https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=10443&wa=wsignin1.0
Después de esto tenéis que descargar el código fuente. Éste está alojado en la siguiente localización:
http://referencesource.microsoft.com/netframework.aspx
Instaláis el paquete de instalación indicando una ruta cualquiera de destino, como por ejemplo ‘C:\ReferenceSource’. Después de esto, ejecutáis VS2008 , acudid al menú de Herramientas (Tools) y en diálogo de Opciones, escoged el nodo de Depuración (Debugging) y seleccionad ‘General’. Acto seguido hay que realizar las siguientes acciones:
- Desactivar el check de ‘Enable Just My Code (Managed Only)’.
- Activar el check de ‘Enable source server support’.
- Desactivar el check de ‘Require source files to exactly match the original version’.
Después de esto, nos situamos en el nodo de Símbolos (Symbols), aquí le indicaréis al entorno la localización de los símbolos (archivos .pdb) que habéis descargado anteriormente, para ello se le indica la ruta, en nuestro ejemplo ‘C:\ ReferenceSource\Symbols’. Y finalmente aceptamos los cambios y salimos del formulario de opciones.
Ahora para poder depurar el código fuente sólo tenéis que situar un ‘breakpoint’ en cualquier elemento (propiedad, método…) que pertenezca a alguno de los ‘namespaces’ listados anteriormente y ejecutar vuestro código. Por ejemplo, queremos seguir la depuración cuando asignamos un nombre a un Windows Form:
private void button1_Click(object sender, EventArgs e)
{
System.Diagnostics.Debug.WriteLine("Test");
this.Text = "TestName";
}
Situamos el punto de ruptura en la línea de código ‘this.Text’ y al depurar dentro de la propiedad veréis algo como esto:
[SettingsBindable(true)]
public override string Text {
get {
return base.Text;
}
set {
base.Text = value;
}
}
Esto os indicará que ya estais dentro del código del Framework y podréis observar los diferentes elementos que conforman la clase Form.
Como conclusión podemos concluir que esta configuración os ayudará a entender mejor el funcionamiento del Framework y poder desarrollar nuevos componentes , como pueden ser controles web o Windows, de una manera más eficiente y extensible.
Raúl Lendínez