Compartir a través de


Depuración de un proceso en modo de usuario mediante WinDbg clásico

Puede usar WinDbg para asociar a un proceso en ejecución o para generar y adjuntar a un nuevo proceso.

Asociación a un proceso en ejecución

Hay varias maneras de usar WinDbg para asociarse a un proceso en ejecución. Independientemente del método que elija, necesitará el identificador de proceso o el nombre del proceso. El identificador de proceso es un número asignado por el sistema operativo. Para obtener más información sobre cómo determinar el identificador de proceso y el nombre del proceso, consulte Búsqueda del identificador de proceso.

Menú WinDbg

Cuando WinDbg está en modo inactivo, puedes adjuntar a un proceso en ejecución seleccionando Asociar a un proceso desde el menú Archivo o presionando F6.

En el cuadro de diálogo Asociar al proceso, seleccione el proceso que desea depurar y seleccione Aceptar.

Símbolo del sistema

En una ventana del símbolo del sistema, puede asociarse a un proceso en ejecución al iniciar WinDbg. Use uno de los siguientes comandos:

  • windbg -p ProcessID
  • windbg -pn ProcessName

donde ProcessID es el identificador de proceso de un proceso en ejecución o ProcessName es el nombre de un proceso en ejecución.

Para obtener más información sobre la sintaxis de la línea de comandos, vea Opciones de línea de comandos de WinDbg.

Ventana de comando del depurador

Si WinDbg ya está depurando uno o varios procesos, puede asociarse a un proceso en ejecución mediante el comando .attach (Asociar al proceso) en la ventana Comando del depurador.

El depurador siempre inicia varios procesos de destino simultáneamente, a menos que algunos de sus subprocesos estén inmovilizados o suspendidos.

Si el comando .attach se realiza correctamente, el depurador se asocia al proceso especificado la próxima vez que el depurador emite un comando de ejecución. Si usa este comando varias veces en una fila, el depurador debe solicitar la ejecución tantas veces como use este comando.

Adjuntar a un proceso en ejecución de forma novasiva

Si desea depurar un proceso en ejecución e interferir solo mínimamente en su ejecución, debe depurar el proceso de forma novasiva.

Menú WinDbg

Cuando WinDbg está en modo inactivo, puede depurar de forma novasiva un proceso en ejecución seleccionando Asociar a un proceso en el menú Archivo o presionando F6.

Cuando aparezca el cuadro de diálogo Asociar al proceso , active la casilla Noninvasive . A continuación, seleccione la línea que contiene el identificador de proceso y el nombre que desee. (También puede escribir el identificador de proceso en el Cuadro Id. de proceso). Por último, seleccione Aceptar.

Símbolo del sistema

En una ventana del símbolo del sistema, puede asociar a un proceso en ejecución de forma novasiva al iniciar WinDbg. Use uno de los siguientes comandos:

  • windbg -pv -p ProcessID
  • windbg -pv -pn ProcessName

Hay otras opciones de línea de comandos útiles. Para obtener más información sobre la sintaxis de la línea de comandos, vea Opciones de línea de comandos de WinDbg.

Ventana de comando del depurador

Si el depurador ya está activo, puede depurar de forma novasiva un proceso en ejecución mediante el comando .attach -v (Asociar al proceso) en la ventana Comando del depurador.

Puede usar el comando .attach si el depurador ya está depurando uno o varios procesos de forma invasiva. No puede usar este comando si WinDbg está inactivo.

Si el comando .attach -v se ejecuta correctamente, el depurador depura el proceso especificado la próxima vez que el depurador emite un comando de ejecución. Dado que no se permite la ejecución durante la depuración novasiva, el depurador no puede depurar de forma novasiva más de un proceso a la vez. Esta restricción también significa que el uso del comando .attach -v podría hacer que una sesión de depuración invasiva existente sea menos útil.

Generar un nuevo proceso

WinDbg puede iniciar una aplicación en modo de usuario y, a continuación, depurar la aplicación. La aplicación se especifica por nombre. El depurador también puede asociarse automáticamente a procesos secundarios (procesos adicionales que inició el proceso de destino original).

Los procesos que crea el depurador (también conocidos como procesos generados) se comportan ligeramente de forma diferente a los procesos que el depurador no crea.

En lugar de usar la API de montón estándar, los procesos que crea el depurador usan un montón de depuración especial. Puede forzar que un proceso generado use el montón estándar en lugar del montón de depuración mediante la variable de entorno _NO_DEBUG_HEAP o la opción de línea de comandos -hd.

Además, dado que la aplicación de destino es un proceso secundario del depurador, hereda los permisos del depurador. Este permiso podría permitir que la aplicación de destino realice determinadas acciones que no se pudieron realizar de otro modo. Por ejemplo, la aplicación de destino podría afectar a los procesos protegidos.

Menú WinDbg

Cuando WinDbg está en modo inactivo, puede generar un nuevo proceso seleccionando Abrir ejecutable en el menú Archivo o presionando CTRL+E.

Cuando aparezca el cuadro de diálogo Abrir ejecutable, escriba la ruta de acceso completa del archivo ejecutable en el cuadro Nombre de archivo o use la lista Buscar en para seleccionar la ruta de acceso y el nombre de archivo que desee.

Si desea usar parámetros de línea de comandos con la aplicación en modo de usuario, escríbalos en el cuadro Argumentos . Si desea cambiar el directorio inicial del directorio predeterminado, escriba la ruta de acceso del directorio en el cuadro Inicio del directorio. Si desea que WinDbg se adjunte a los procesos secundarios, active también la casilla Depurar procesos secundarios.

Después de realizar las selecciones, seleccione Abrir.

Símbolo del sistema

En una ventana del símbolo del sistema, puede generar un nuevo proceso al iniciar WinDbg. Use el comando siguiente:

windbg [-o] ProgramName [Arguments]

La opción -o hace que el depurador se adjunte a los procesos secundarios. Hay otras opciones de línea de comandos útiles. Para obtener más información sobre la sintaxis de la línea de comandos, vea Opciones de línea de comandos de WinDbg.

Ventana de comando del depurador

Si WinDbg ya está depurando uno o varios procesos, puede crear un proceso mediante el comando .create (Crear proceso) en la ventana Comando del depurador.

El depurador siempre iniciará varios procesos de destino simultáneamente, a menos que algunos de sus subprocesos estén inmovilizados o suspendidos.

Si el comando .create se ejecuta correctamente, el depurador crea el proceso especificado la próxima vez que el depurador emite un comando de ejecución. Si usa este comando varias veces en una fila, el depurador debe solicitar la ejecución tantas veces como use este comando.

Puede controlar el directorio inicial de la aplicación mediante el comando .createdir (Establecer directorio de procesos creados) antes de .create. Puede usar el comando .createdir -I o la opción de línea de comandos -noinh para controlar si la aplicación de destino hereda los identificadores del depurador.

Puede activar o desactivar la depuración de procesos secundarios mediante el comando .childdbg (Depurar procesos secundarios).

Volver a asociar a un proceso

Si el depurador deja de responder o se bloquea, puede adjuntar un nuevo depurador al proceso de destino. Para obtener más información sobre cómo adjuntar un depurador en esta situación, consulte Reattaching to the Target Application (Volver a asociar a la aplicación de destino).