Introducción a la depuración de Windows
En este artículo se explica cómo empezar a utilizar la depuración para Windows. Si su objetivo es usar el depurador para analizar un volcado de memoria, consulte Análisis de archivos de volcado de memoria mediante WinDbg.
Para empezar a trabajar con la depuración de Windows, siga estos pasos.
1. Identificar los sistemas host y de destino
Normalmente se usan dos sistemas informáticos independientes para la depuración porque la ejecución de instrucciones en el procesador se suele pausar durante el proceso. El depurador se ejecuta en el sistema host y el código que desea depurar se ejecuta en el sistema de destino.
Host <--------------------------------------------------> Destino
En algunas situaciones, es posible usar una máquina virtual como segundo sistema. Por ejemplo, un equipo virtual podría ejecutarse en el mismo equipo que el código que necesita para depurar. Sin embargo, si el código se comunica con hardware de bajo nivel, es posible que el uso de un equipo virtual no sea el mejor enfoque. Para obtener más información, consulte Configuración de la depuración de red de una máquina virtual - KDNET.
2. Determinar el tipo del depurador: modo kernel o modo de usuario
A continuación, debe determinar si se debe usar la depuración en modo kernel o en modo de usuario.
El sistema operativo y los programas con privilegios se ejecutan en modo kernel. El código en modo kernel tiene permiso para acceder a cualquier parte del sistema y no está restringido como el código en modo de usuario. El código en modo kernel puede obtener acceso a cualquier parte de cualquier otro proceso que se ejecute en modo de usuario o en modo kernel. Gran parte de la funcionalidad principal del sistema operativo y muchos controladores de dispositivos de hardware se ejecutan en modo kernel.
Las aplicaciones y subsistemas del equipo se ejecutan en modo de usuario. Los procesos que se ejecutan en modo de usuario lo hacen dentro de sus propios espacios de direcciones virtuales. Están restringidos a obtener acceso directo a muchas partes del sistema, incluido el hardware del sistema, la memoria que no está asignada para su uso y otras partes del sistema que podrían poner en peligro la integridad del sistema. Los procesos que se ejecutan en modo de usuario están aislados eficazmente del sistema y de otros procesos en modo de usuario, por lo que no pueden interferir con estos recursos.
Si el objetivo es depurar un controlador, determine si el controlador es un controlador en modo kernel o un controlador en modo de usuario. Los controladores del modelo de controlador de Windows (WDM) y el marco de controladores en modo kernel (KMDF) son controladores en modo kernel. Como sugiere el nombre, los controladores del marco de controladores en modo de usuario (UMDF) son controladores en modo de usuario.
Para algunos problemas, puede ser difícil determinar en qué modo se ejecuta el código. En ese caso, es posible que tenga que elegir un modo y ver qué información está disponible en ese modo. Algunos problemas requieren el uso del depurador tanto en modo de usuario como en modo kernel.
En función del modo en el que se depura, es posible que tenga que configurar y usar los depuradores de maneras diferentes. Algunos comandos de depuración funcionan igual en ambos modos y algunos comandos funcionan de forma diferente.
Obtenga más información sobre el uso del depurador en modo kernel:
- Introducción a WinDbg (modo kernel)
- Controladores universales de depuración: laboratorio paso a paso (modo kernel eco)
- Controladores de depuración: laboratorio paso a paso (modo kernel sysvad)
Obtenga más información sobre el uso del depurador en modo de usuario:
3. Elegir el entorno del depurador
El depurador de WinDbg funciona bien en la mayoría de las situaciones, pero hay ocasiones en las que es posible que quiera usar otro depurador, como depuradores de consola para la automatización o Visual Studio. Para obtener más información, consulte Entornos de depuración.
4. Determinar cómo conectar el destino y el host
Normalmente, los sistemas host y de destino están conectados mediante una red Ethernet. Si está realizando trabajos de puesta a punto o no dispone de conexión Ethernet en un dispositivo, tiene a su disposición otras opciones de conexión a la red. Para más información, consulte estos artículos:
- Configuración automática de la depuración del kernel de red KDNET
- Configuración de la depuración de red de una máquina virtual - KDNET
5. Elegir las herramientas de depuración de 32 o 64 bits
La necesidad de un depurador de 32 o 64 bits depende de la versión de Windows que se ejecute en los sistemas de destino y host, y de si está depurando código de 32 o 64 bits. Para obtener más información, consulte Elección de herramientas de depuración de 32 o 64 bits.
6. Configurar los símbolos
Para usar todas las funciones avanzadas que proporciona WinDbg, debe cargar los símbolos adecuados. Si no tiene símbolos configurados correctamente, recibirá mensajes que indican que los símbolos no están disponibles al intentar usar la funcionalidad que depende de los símbolos. Para obtener más información, consulte Símbolos para la depuración de Windows.
7. Configurar el código fuente
Si el objetivo es depurar su propio código fuente, debe configurar una ruta de acceso al código fuente. Para obtener más información, consulte Ruta de acceso al código fuente.
8. Familiarizarse con la operación del depurador
En la sección Funcionamiento del depurador de esta documentación describe el funcionamiento del depurador para diversas tareas. Por ejemplo, en Carga de archivos DLL de extensión del depurador se explica cómo cargar extensiones del depurador.
9. Familiarizarse con las técnicas de depuración
Las técnicas de depuración estándar se aplican a la mayoría de los escenarios de depuración y entre los ejemplos se incluyen establecer puntos de interrupción, inspeccionar la pila de llamadas y buscar una fuga de memoria. Las técnicas de depuración especializadas se aplican a determinadas tecnologías o tipos de código. Entre los ejemplos se incluyen la depuración de Plug and Play, la depuración de KMDF y la depuración RPC.
10. Usar los comandos de referencia del depurador
Puede usar distintos comandos de depuración a medida que trabaja en el depurador. Use el comando .hh en el depurador para mostrar información útil sobre cualquier comando de depuración. Para obtener más información sobre los comandos disponibles, vea Referencia del depurador.
11. Usar extensiones de depuración para tecnologías específicas
Hay varias extensiones de depuración que se pueden usar para analizar estructuras de datos específicas del dominio. Para obtener más información, consulte Extensiones especializadas.
12. Más información sobre aspectos internos de Windows relacionados
En esta documentación se da por supuesto que tiene conocimientos sobre los elementos internos principales de Windows. Para obtener más información sobre los aspectos internos de Windows, incluido el uso de memoria, el contexto, los subprocesos y los procesos, puede revisar recursos como Windows Internals de Pavel Yosifovich, Mark E. Russinovich, David A. Solomon y Alex Ionescu.
13. Revisar recursos de depuración adicionales
Otros recursos incluyen los siguientes libros y vídeos:
- Inside Windows Debugging: Practical Debugging and Tracing Strategies de Tarik Soulami
- Advanced Windows Debugging de Mario Hewardt y Daniel Pravat
- Serie de vídeos de Defrag Tools, episodios de 13 a 29, todo sobre WinDbg
Consulte también
- Introducción a WinDbg (modo kernel)
- Introducción a WinDbg (modo de usuario)
- Elección de herramientas de depuración de 32 o 64 bits
- Entornos de depuración
- Configuración de la depuración (modo de kernel y modo de usuario)
- Controladores universales de depuración: laboratorio paso a paso (modo kernel eco)
- Controladores de depuración: laboratorio paso a paso (modo kernel sysvad)