Compartir a través de


Depuración de varios destinos

Puede depurar varios archivos de volcado de memoria o aplicaciones en modo de usuario activas al mismo tiempo. Cada destino contiene uno o varios procesos y cada proceso contiene uno o varios subprocesos.

Estos destinos también se agrupan en sistemas. Los sistemas son conjuntos de destinos que se agrupan para facilitar la identificación y manipulación. Los sistemas se definen de la manera siguiente:

  • Cada archivo de volcado de modo kernel o modo de usuario es un sistema independiente.

  • Al depurar aplicaciones en modo de usuario en directo en equipos diferentes (mediante un servidor de procesos, como Dbgsrv), cada aplicación es un sistema independiente.

  • Al depurar aplicaciones en modo de usuario en directo en el equipo local, las aplicaciones se combinan en un único sistema.

El sistema actual o activo es el sistema que está depurando actualmente.

Adquisición de varios destinos

El primer destino se adquiere de la manera habitual.

Puede depurar aplicaciones en modo de usuario en directo adicionales mediante el comando .attach (Asociar al proceso) o .create (Crear proceso), seguido del comando g (Go).

Puede depurar archivos de volcado adicionales mediante el comando .opendump (Abrir archivo de volcado de memoria), seguido del comando g (Go). También puede abrir varios archivos de volcado de memoria cuando se inicia el depurador. Para abrir varios archivos de volcado, incluya varios modificadores -z en el comando, cada uno seguido de un nombre de archivo diferente.

Puede usar los comandos anteriores incluso si los procesos están en sistemas diferentes. Debe iniciar un servidor de procesos en cada sistema y, a continuación, usar el parámetro -premote con .attach o .create para identificar el servidor de procesos adecuado. Si usa de nuevo el comando .attach o .create sin especificar el parámetro -premote, el depurador se adjunta o crea un proceso en el sistema actual.

Manipular sistemas y destinos

Cuando se inicia la depuración, el sistema actual es el que el depurador ha asociado más recientemente. Si se produce una excepción, el sistema actual cambia al sistema en el que se produjo esta excepción.

Para cerrar un destino y seguir depurando los otros destinos, use el comando .kill (Kill Process). Puede usar el comando .detach (Desasociar del proceso) o depurar de WinDbg | En su lugar, desasocie el comando de menú Depurar . Estos comandos desasocian el depurador del destino, pero dejan el destino en ejecución.

Para controlar la depuración de varios sistemas, puede usar los métodos siguientes:

Con estos comandos para seleccionar el sistema actual y mediante los comandos estándar para seleccionar el proceso y el subproceso actuales, puede determinar el contexto de los comandos que muestran la memoria y los registros.

Sin embargo, no se puede separar la ejecución de estos procesos. El comando g (Go) siempre hace que todos los destinos se ejecuten juntos.

Nota Hay complicaciones, al depurar destinos dinámicos y destinos de volcado de memoria juntos, ya que los comandos se comportan de forma diferente para cada tipo de depuración. Por ejemplo, si usa el comando g (Go) cuando el sistema actual es un archivo de volcado de memoria, el depurador comienza a ejecutarse, pero no se puede interrumpir en el depurador, ya que el comando break no se reconoce como válido para la depuración de archivos de volcado.

Ejemplo

Para trabajar con tres archivos de volcado al mismo tiempo, puedes usar la opción -z para cargarlos cuando se inicia WinDbg.

windbg -z c:\notepad.dmp -z c:\paint.dmp -z c:\calc.dmp

Para obtener más información, vea Opciones de línea de comandos de WinDbg. También puede usar los comandos .opendump y g (Go) para cargar archivos de volcado adicionales en el depurador.

Usar | | (Estado del sistema) comando para confirmar que los tres sistemas están presentes.

||0:0:007> ||
.  0 User mini dump: c:\notepad.dmp
   1 User mini dump: C:\paint.dmp
   2 User mini dump: c:\calc.dmp

Use el comando g (Go) para completar la carga de los archivos de volcado.

||0:0:007> g

************* Path validation summary **************
Response                         Time (ms)     Location
Deferred                                       srv*
Symbol search path is: srv*
Executable search path is: 
Windows 10 Version 15063 MP (4 procs) Free x64
Product: WinNt, suite: SingleUserTS
15063.0.amd64fre.rs2_release.170317-1834
Machine Name:
Debug session time: Fri Jun  9 15:52:04.000 2017 (UTC - 7:00)
System Uptime: not available
Process Uptime: 0 days 0:03:44.000
...............................................................
This dump file has a breakpoint exception stored in it.
The stored exception information can be accessed via .ecxr.
ntdll!DbgBreakPoint:
00007ff8`aada8d70 cc              int     3

A continuación, use | |s (Establecer sistema actual) para establecer el sistema actual en el sistema 1 y, a continuación, mostrar el sistema actual.

||1:1:017> ||1s
||1:1:017> ||
   0 User mini dump: c:\notepad.dmp
.  1 User mini dump: c:\paint.dmp
   2 User mini dump: c:\calc.dmp

Puede usar el comando .detach cuando haya terminado de examinar el archivo de volcado actual.

||1:1:017> .detach
ntdll!DbgBreakPoint:
00007ff8`aada8d70 cc              int     3
Detached
||0:0:007> ||
.  0 User mini dump: c:\notepad.dmp
   2 User mini dump: c:\calc.dmp

Recursos

Para obtener más información sobre la depuración, consulte los siguientes recursos.

Libros

  • Advanced Windows Debugging de Mario Hewardt y Daniel Pravat

  • Dentro de la depuración de Windows: una guía práctica para las estrategias de depuración y seguimiento en Windows por Tarik Soulami

  • Windows Internals de Pavel Yosifovich, Alex Ionescu, Mark E. Russinovich y David A. Solomon

Vídeo

The Defrag Tools Show WinDbg Episodes 13-29: </shows/defrag-tools/>