Disponible la "Application Architecture Guide 2.0" de .NET
Lectura obligada. Disponible para descarga gratuita en formato PDF:
Pantalla azul (Blue Screen of Death) de Windows, mitos, leyendas urbanas y realidades.
Un problema que ocurre con cierta frecuencia al utilizar Windows es la famosa “pantalla azul” o la “blue screen of death”. Aunque es un problema que ha disminuido su frecuencia, aún es común. La mayoría atribuye esto a un error de Windows concluyendo que es un sistema operativo poco fiable creando con esto una mala reputación que no necesariamente es real.
Pocos saben qué es lo que pasa realmente cuando ocurre este problema (y ciertamente no tendrían porque saberlo ni tener conocimientos técnicos profundos), pero la gran mayoría de las veces que se presenta este error es por causas completamente ajenas a Windows en sí mismo, y más bien es provocado por drivers defectuosos (desarrollados incorrectamente o incompatibles) o a errores de alguna aplicación de terceros.
No es el objetivo de este post hacer una apología, ya que al final del día un sistema operativo debería ser capaz de protegerse a sí mismo ante tales circunstancias y no dejar de funcionar por completo, sin embargo, sí es el objetivo demostrar que no siempre el error es Windows como tal. Esto utilizando herramientas disponibles para todos de forma gratuita y en un proceso que toma menos de 5 minutos. Es un proceso que puede parecer complicado, pero que en realidad es bastante sencillo y trataré de explicar de la forma más simple.
Entrando en materia, si se observa bien cuando ocurre este error, la pantalla azul además de desplegar mensajes indescifrables para cualquiera que no sea uno de los programadores de Windows, ejecuta un proceso que “vacía” el contenido de la memoria RAM a un archivo en el disco duro. El progreso de este proceso se puede ver en las líneas inferiores (“Beginning dump of physical memory”):
Por default, el archivo generado se guarda en la siguiente ruta:
%SystemRoot%\MEMORY.DMP
La mayoría de las veces:
“c:\Windows\MEMORY.DMP”
Este archivo contiene datos valiosos sobre el instante en que ocurrió el error que provocó la pantalla azul. De hecho, contiene información para hacer debugging (depuración) de Windows como tal. Cualquiera que haya programado alguna vez en su vida sabe que el objetivo de hacer debugging es encontrar errores en el código para corregirlos. En este caso, este archivo es utilizado por programadores que desarrollan drivers dispositivos de hardware por ejemplo para encontrar errores en sus productos.
Para poder analizar este archivo, es necesario utilizar la herramienta WinDebug (WinDbg) disponible para descarga gratuita en el sitio de Microsoft en http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx (Versiones para 32 bits y 64 bits).
Una vez instalada la herramienta, hay que localizar el archivo del dump (MEMORY.DMP). Después, abrir WinDbg y configurar los símbolos de la siguiente forma: File->Symbol File Path…
En la ventana que aparece despues, especificar la siguiente línea:
SRV*c:\symbols*http://msdl.microsoft.com/download/symbols
Para no agregar complejidad innecesaria al post omitiré la explicación de que son los "symbols", pero para más informaciónal respecto: http://msdn.microsoft.com/en-us/library/cc266473.aspx
Este paso es vital, ya que de esta forma estamos configurando WinDbg para que descargue archivos necesarios para la depuración y los guarde en nuestro disco duro en una carpeta existente.
Una vez configurados los símbolos, abrimos el archivo MEMORY.DMP:
Aparecerá un mensaje preguntando si queremos guardar el workspace. Como en este caso lo único que queremos es encontrar el culpable de la pantalla azul, damos clic en “No”:
A continuación empezará el cargado del archivo. Es necesario tener conexión a internet, ya que los simbolos se irán descargando conforme se vallan necesitando. Una vez terminada la carga del archivo del dump, tendremos una pantalla así:
En este momento Windbg está listo y en espera de un comando. Para nuestro fin, la mayoría de las veces bastara con teclear:
- !analyze -v
en la línea de comandos y después presionar la tecla <Enter>:
El resultado de la ejecución de este comando, es una pantalla donde se encuentra la información recaba en el momento de la pantalla azul. En este ejemplo, esta resaltado en amarillo las líneas que revelan al culpable de la pantalla azul: Un proceso llamado “avp.exe”, mejor conocido como Kaspersky Antivirus.
WinDbg brinda opciones mucho más avanzadas que salen del objetivo de este post, sin embargo, he aquí la liga desde la cual se puede partir:
Debugging Tools for Windows
El buen programador …
El buen programador primero resuelve el problema, después escribe el código.
John Johnson
Revista MSDN Septiembre
La revista MSDN de Septiembre ya esta disponible. Este mes son altamente recomendables los artículos:
- CLR Inside Out – Unhandled Exception Processing in the CLR. Muestra una excelente forma de rastrear las exceptoins no manejadas en cualquier aplicación .NET.
- Patterns For Building Composite Applications With WPF. Excelente artículo sobre la implementación del patrón composite utilizando WPF (Windows Presentation Foundation), otro enfoque para enfrentar el eterno problema de la separación de las capas de negocios, presentación, etc.
- Service-Driven Apps With Silverlight 2 And WCF – Silverlight no es ningún intento de "flash-kill" para distribuir contenido multimedia, simplemente es es una interface dw WPF y por lo tanto es mucho más poderosa y versatil. En este artículo se muestra como consumir servicios de WCF (Windows Comunication Foundation).
Y muchos artículos más igualmente interesantesy todos con su correspondiente código fuente para descargar:
AWP Essential LINQ
Este es un excelente libro de la editorial Addison-Wesley, qué como de costumbre en sus publicaciones técnicas, va a fondo de los temas que trata publicando libros escritos regularmente por los creadores de las distintas tecnologías. En este caso este libro sobre LINQ, que cubre desde los aspectos más elementales, hasta tópicos avanzados como Multi-tier Entities, Tips y trucos de performance, LINQ en el nuevo Entity Framework, patrones de diseño y la construcción de providers “LINQ to xxxx”.
Curso gratis en video de Silverlight 2
Si te interesa aprender Silverlight a nivel desarrollador definitivamente este es el mejor comienzo. Es un material en video con Dino Esposito de 4 horas de duración que toca temas (entre muchos otros) como:
- Objetivos de Silverlight 1
- Objetivos de Silverlight 2
- Silverlight Vs. Ajax
- Silverlight Vs. Smart Client
- XAML
- DOM-to-Silverlight
- Linq en Silverlight
- Silverlight and Threading (Ohh si, al aprovechar el CLR de .NET en el plug-in, Silverlight 2 brinda posibilidades unicas de multithreading
)
Sin duda un excelente material para conocer a profundidad las capacidades de Silverlight:
Entity Framework FAQ
Se acerca la liberación del Service Pack 1 del .NET Framework 3.5, lo que significa la disponibilidad del ADO.NET Entity Framework. He aquí una lectura obligada al respecto:
http://blogs.msdn.com/dsimmons/archive/2008/06/06/new-in-version-0-6-of-the-ef-faq.aspx