WinDbg es un depurador multipropósito para el sistema operativo de computadora Microsoft Windows , distribuido por Microsoft. [1] La depuración es el proceso de encontrar y resolver errores en un sistema ; en informática también incluye explorar el funcionamiento interno del software como ayuda al desarrollo. Se puede utilizar para depurar aplicaciones en modo usuario , controladores de dispositivos y el propio sistema operativo en modo kernel .
Al igual que el más conocido Visual Studio Debugger, WinDbg tiene una interfaz gráfica de usuario (GUI), pero es más potente y tiene poco más en común. WinDbg puede cargar automáticamente archivos de símbolos de depuración (por ejemplo, archivos PDB ) desde un servidor haciendo coincidir varios criterios (por ejemplo, marca de tiempo, CRC, versión de procesador único o multiprocesador) a través de SymSrv (SymSrv.dll), [2] en lugar del método que consume más tiempo. tarea de crear un árbol de símbolos para un entorno de destino de depuración. Si se configura un servidor de símbolos privado, los símbolos se pueden correlacionar con el código fuente del binario. Esto alivia la carga de los problemas de depuración que tienen varias versiones de archivos binarios instalados en el destino de depuración al eliminar la necesidad de buscar e instalar versiones de símbolos específicas en el host de depuración. Microsoft tiene un servidor de símbolos públicos que tiene la mayoría de los símbolos públicos para Windows 2000 y versiones posteriores de Windows (incluidos los paquetes de servicio ). [3]
WinDbg también se puede utilizar para depurar volcados de memoria en modo kernel , creados después de lo que comúnmente se llama la Pantalla Azul de la Muerte , que ocurre cuando se emite una verificación de error . [4] También se puede utilizar para depurar volcados de memoria en modo usuario. Esto se conoce como depuración post-mortem . [5]
Las versiones recientes de WinDbg se han distribuido y se están distribuyendo como parte de la suite gratuita Herramientas de depuración para Windows, que comparte un back-end de depuración común entre WinDbg y los front-ends de depuración de línea de comandos como KD, CDB y NTSD. La mayoría de los comandos se pueden utilizar tal cual con todas las interfaces de depuración incluidas.
En 2017, Microsoft anunció una nueva versión de WinDbg llamada WinDbg Preview (también conocida como WinDbgX). [6] Una de las características más notables de WinDbg Preview es la llamada Depuración de viaje en el tiempo (TTD). [7] La idea principal aquí es que el usuario puede grabar un proceso real en vivo (con una penalización de rendimiento) para luego depurarlo yendo y viniendo en el tiempo. Esta característica es especialmente útil durante el proceso de ingeniería inversa. También permite escribir scripts en lenguaje JavaScript. [8]
WinDbg permite la carga de DLL de extensión [9] que pueden aumentar los comandos admitidos por el depurador y permitir ayuda en la depuración de escenarios específicos: por ejemplo, mostrar un documento MSXML dado un IXMLDOMDocument o depurar Common Language Runtime (CLR) . [10] Estas extensiones son una gran parte de lo que hace que WinDbg sea un depurador tan poderoso. El equipo de productos de Microsoft Windows utiliza WinDbg para compilar Windows, y todo lo necesario para depurar Windows está incluido en estas extensiones DLL.
Los comandos de extensión siempre tienen el prefijo ! .
Si bien algunas extensiones se usan solo dentro de Microsoft, la mayoría de ellas forman parte del paquete público de Herramientas de depuración para Windows.
El modelo de extensión está documentado en el archivo de ayuda incluido con las Herramientas de depuración para Windows.
Ext es una extensión estándar del depurador de Windows que se envía con WinDBG y se carga de forma predeterminada.
El comando más comúnmente utilizado es !analyze -v , [11] que analiza el estado actual del programa que se está depurando y el estado de la máquina/proceso en el momento del bloqueo o bloqueo. Este comando suele ser capaz de depurar el problema actual de forma completamente automática.
Cuando se usa sin ningún modificador, !analyze simplemente devuelve los resultados de su análisis. -v y -vv brindan más detalles sobre ese análisis.
Wow6432exts es una extensión estándar del depurador de Windows que se envía con WinDBG. Se utiliza para depurar procesos que se ejecutan dentro de WoW64 (procesos de 32 bits que se ejecutan en Windows de 64 bits). [12]
La extensión de depuración SOS (Son of Strike) [13] (SOS.dll) ayuda a depurar programas administrados en Visual Studio y WinDbg al proporcionar información sobre el entorno interno de Common Language Runtime (CLR). Esta herramienta requiere que un proyecto tenga habilitada la depuración no administrada. SOS.dll se instala automáticamente con .NET Framework. Para usar SOS.dll en Visual Studio, instale el kit de controladores de Windows (WDK). [14] Para depurar un proceso o un volcado de memoria, la versión sos.dll debe coincidir con la versión de .NET Framework. Psscor2 y Psscor4 son un superconjunto de SOS.
Psscor2 es la extensión del depurador de Windows que se utiliza para depurar aplicaciones de .NET Framework que utilizan .NET CLR versión 2.0 (versiones de .NET Framework 2 a 3.5). Psscor2 fue desarrollado para uso interno en Microsoft como parte de sus herramientas de Servicios de soporte de productos. [15] Si bien Microsoft solo lanzó Psscor2 en 2010 [16] Microsoft había estado publicando comandos de la extensión varios años antes, [17] causando dificultades a quienes intentaban seguir sus procesos.
Psscor4 es una extensión del depurador de Windows que se utiliza para depurar aplicaciones .NET Framework 4.
WinDbg permite depurar un kernel de Microsoft Windows que se ejecuta en una máquina virtual mediante VMware , VPC o Parallels utilizando una canalización con nombre . Esto se puede lograr utilizando un puerto COM virtual . En el caso de VMware y VirtualBox , la extensión VirtualKD agrega soporte nativo para la depuración de VM al kernel de Windows, afirmando acelerar la depuración en un factor de hasta 45. [18] Para Windows 8 y posteriores, se permite la depuración del kernel a través de la red. [19] que permite una depuración rápida del kernel sin configuración especial.
El protocolo WinDbg no está documentado, pero es compatible con los desensambladores IDA Pro y radare2 .