Entornos de depuración
Hay seis entornos de depuración disponibles:
- WinDbg
- WinDbg (clásico)
- Depurador de kernel (KD)
- NTKD
- Depurador de consola (CDB)
- Depurador simbólico NT (NTSD)
En las secciones siguientes se describen los entornos de depuración.
WinDbg
WinDbg es la última versión de WinDbg con objetos visuales modernos, ventanas más rápidas y una experiencia de scripting completa, creada con el modelo de datos del depurador extensible al frente y en el centro. WinDbg usa el mismo motor subyacente que WinDbg (clásico), por lo que todos los comandos, extensiones y flujos de trabajo que se usan seguirán funcionando como lo hacían antes.
Para obtener más información, consulte Características de WinDbg.
WinDbg (clásico)
Microsoft Windows Debugger WinDbg (clásico) es un depurador basado en Windows que es capaz de depurar tanto en modo de usuario como en modo kernel. WinDbg proporciona depuración para el kernel de Windows, los controladores en modo kernel y los servicios del sistema, así como para las aplicaciones y controladores en modo de usuario.
WinDbg usa los formatos de símbolos de depuración de Visual Studio para la depuración de nivel de origen. Puede acceder a cualquier símbolo o variable de un módulo que tenga archivos de símbolos PDB y a cualquier nombre de función pública expuesto por módulos creados con archivos de símbolos COFF (como archivos .dbg de Windows).
WinDbg puede ver el código fuente, establecer puntos de interrupción, ver variables (incluidos objetos de C++), seguimientos de pila y memoria. La ventana Comando del depurador permite al usuario emitir una amplia variedad de comandos.
Para la depuración en modo kernel, WinDbg normalmente requiere dos equipos (el equipo host y el equipo de destino). WinDbg también admite varias opciones de depuración remota para destinos en modo de usuario y en modo kernel.
WinDbg es un homólogo de interfaz gráfica de CDB/NTSD y KD/NTKD.
KD
Microsoft Kernel Debugger (KD) es un programa de consola basado en caracteres que permite el análisis detallado de la actividad en modo kernel en todos los sistemas operativos basados en NT. Puede usar KD para depurar componentes y controladores en modo kernel o para supervisar el comportamiento del propio sistema operativo. KD también admite la depuración de varios procesadores.
Normalmente, KD no se ejecuta en el equipo que se está depurando. Necesita dos equipos (el equipo host y el equipo de destino) para la depuración en modo kernel.
NTKD
Hay una variación del depurador KD denominado NTKD. Es idéntico a KD en todos los sentidos, excepto en que genera una nueva ventana de texto cuando se inicia, mientras que KD hereda la ventana del símbolo del sistema desde la que se invocó.
CDB
Microsoft Console Debugger (CDB) es un programa de consola basado en caracteres que permite el análisis de bajo nivel de memoria y construcciones en modo de usuario de Windows. El nombre Depurador de consola se usa para indicar el hecho de que CDB se clasifica como una aplicación de consola; no implica que la aplicación de destino deba ser una aplicación de consola. De hecho, CDB es totalmente capaz de depurar aplicaciones de consola y programas gráficos de Windows.
CDB es extremadamente eficaz para depurar un programa que se está ejecutando actualmente o que se ha bloqueado recientemente (análisis en directo), pero sencillo de configurar. Se puede usar para investigar el comportamiento de una aplicación en funcionamiento. En el caso de una aplicación con error, se puede usar CDB para obtener un seguimiento de pila o para examinar los parámetros culpables. Funciona bien en una red (mediante un servidor de acceso remoto), ya que está basado en caracteres.
Con CDB, puede mostrar y ejecutar código de programa, establecer puntos de interrupción y examinar y cambiar valores en memoria. CDB puede analizar el código binario desmontándolo y mostrando instrucciones de ensamblado. También puede analizar el código fuente directamente.
Dado que CDB puede acceder a ubicaciones de memoria a través de direcciones o símbolos globales, puede hacer referencia a datos e instrucciones por nombre en lugar de por dirección, lo que facilita la búsqueda y depuración de secciones específicas del código. CDB admite la depuración de varios subprocesos y procesos. Es extensible y puede leer y escribir en memoria paginada y no paginada.
Si la aplicación de destino es en sí misma una aplicación de consola, el destino compartirá la ventana de consola con CDB. Para generar una ventana de consola independiente para una aplicación de consola de destino, use la opción de línea de comandos -2.
NTSD
Hay una variación del depurador de CDB denominado Depurador simbólico de Microsoft NT (NTSD). Es idéntico a CDB en todos los sentidos, excepto en que genera una nueva ventana de texto cuando se inicia, mientras que CDB hereda la ventana del símbolo del sistema desde la que se invocó.
Dado que el comando start también se puede usar para generar una nueva ventana de consola, las dos construcciones siguientes proporcionarán los mismos resultados:
start cdb parameters
ntsd parameters
Es posible redirigir la entrada y salida desde NTSD (o CDB) para que se pueda controlar desde un depurador de kernel (ya sea Visual Studio, WinDbg o KD). Si esta técnica se usa con NTSD, no aparecerá ninguna ventana de consola. El control de NTSD desde el depurador de kernel es especialmente útil, ya que da lugar a un depurador extremadamente ligero que casi no carga el equipo que contiene la aplicación de destino. Esta combinación puede utilizarse para depurar los procesos del sistema, el apagado y las fases posteriores del arranque. Consulte Control del depurador en modo de usuario desde el depurador de kernel para obtener más información.