Cómo comprobar los símbolos de depuración para Windows

Soporte para Windows Vista Service Pack 1 (SP1) finaliza el 12 de julio de 2011. Para seguir recibiendo actualizaciones de seguridad para Windows, asegúrese de que está ejecutando Windows Vista con Service Pack 2 (SP2). Para obtener más información, consulte la página web de Microsoft: está finalizando el soporte para algunas versiones de Windows.

Resumen

Los símbolos de depuración de Windows deben comprobarse después de iniciar el depurador del núcleo (I386kd.exe | WinDbg.exe). el depurador puede cargar y mostrar un mensaje, pero si los símbolos son incorrectos, no hacen referencia a los comandos de depuración futuras funciones apropiadas y variables, lo que conduce a resultados esporádicos. A continuación aparecen unos indicadores rojos y un par de métodos para la validez del terreno de los símbolos.

Más información

En este artículo se supone que está ejecutando el depurador del núcleo y ha cargado un archivo Memory.dmp o está conectado a un equipo remoto. Presenta los comandos no están totalmente documentados y se muestran sólo los extractos de la salida.

Contenido del artículo

  • Carga al depurador del núcleo
  • Comprobar la hora de creación con! drivers
  • Uso de Link.exe para comprobar la hora de creación
  • Unassembling una función
  • Símbolos de Service Pack

Carga al depurador del núcleo

Una carga normal del depurador del núcleo muestra uno de los siguientes mensajes:
KD > sistema monoprocesador

0: kd > sistema multiprocesador
El mensaje que se muestra a continuación indica que el archivo de símbolos para el archivo Ntoskrnl.exe es incorrecto. Compruebe para asegurarse de que el núcleo de multiprocesador o monoprocesador adecuado y HAL se copian en el árbol de símbolo.


Ejemplo:
Symbol search path is: C:\symbols
kd: crash dump initialized [c:\dump\memory.dmp]
could not determine the current processor, using zero
Kernel Version 1057 Free loaded @ 0x80100000
Bugcheck 0000001e : c0000005 80151d5b 00000000 00000001
*** Contents Deleted ***
16kd>

Cuando carga el archivo Memory.dmp, la versión del núcleo, así como el número de procesadores en el depurador del núcleo se muestra en las primeras líneas. Confirme que el número de procesadores se corresponde con el núcleo adecuado y HAL. Información de símbolos de controlador se muestra como cualquiera de los símbolos se cargan o sean diferidos.

Carga de ejemplo:
Symbol search path is: C:\symbols
kd: crash dump initialized [c:\dump\memory.dmp]
Kernel Version 1057 Free loaded @ 0x80100000
Bugcheck 0000001e : c0000005 80151d5b 00000000 00000001
re-loading all kernel symbols
KD: unloading symbols for "ntoskrnl.exe"
KD: deferring symbol load for "ntoskrnl.exe" at 80100000
KD: Loaded (2248) fpo entries for image (ntoskrnl.exe)
KD: "ntoskrnl.exe" loaded 4074 symbols (80100000-801bbb80)
KD: loaded symbols for "ntoskrnl.exe"
KD: deferring symbol load for "atapi.sys" at fc810000
KD: deferring symbol load for "diskdump.sys" at fc800000
KD: deferring symbol load for "hal.dll" at 80400000
KD: deferring symbol load for "atapi.sys" at 80010000
KD: deferring symbol load for "SCSIPORT.SYS" at 80013000
KD: deferring symbol load for "Atdisk.sys" at 80001000
KD: deferring symbol load for "Scsidisk.sys" at 8001b000
KD: deferring symbol load for "Fastfat.sys" at 80372000
Unable to read image header for Floppy.SYS at fc820000 - status c0000001
*** Contents Deleted ***
KD: deferring symbol load for "srv.sys" at fc9e0000
KD: deferring symbol load for "ntdll.dll" at 77f80000
finished re-loading all kernel symbols
NT!_PspUnhandledExceptionInSystemThread+0x18:
80131ff8 b801000000 mov eax,0x1
kd>

Tenga en cuenta que el depurador del núcleo era "No se puede leer el encabezado de imagen para Floppy.sys en fc820000 - estado c0000001". Este mensaje es normal porque el encabezado de controlador en particular no está actualmente en memoria.

Comprobar la hora de creación con! drivers

Utilice la ! drivers comando para enumerar los controladores actualmente cargados en la memoria. Hacer nota de las fechas y horas de los controladores y o no pudo ser cargados. (Las columnas de tamaño de código y datos en el siguiente ejemplo se quitan para ajustar el ancho del artículo).
kd> !drivers
Base Code Size Data Size Driver Name Creation Time
80100000 Ntoskrnl.exe Fri May 26 18:18:36 1995
80400000 Hal.dll Thu May 11 13:54:18 1995
80010000 Atapi.sys Tue May 23 21:01:41 1995
80013000 Scsiport.sys Fri May 05 23:11:06 1995
80001000 Atdisk.sys Fri May 05 23:10:40 1995
8001b000 Scsidisk.sys Fri May 05 23:11:01 1995
80372000 Fastfat.sys Mon May 22 23:57:13 1995
fc820000 Floppy.sys Header Paged Out
fc830000 Scsicdrm.sys Wed May 10 21:57:03 1995
fc840000 Fs_Rec.sys Header Paged Out
fc850000 Null.sys Header Paged Out
fc860000 Beep.sys Header Paged Out
fc870000 I8042prt.sys Fri May 05 23:10:42 1995
fc880000 Mouclass.sys Fri May 05 23:10:45 1995
fc890000 Kbdclass.sys Fri May 05 23:10:44 1995
fc8b0000 Videoprt.sys Fri May 05 23:10:05 1995
fc8a0000 S3.sys Fri May 19 21:18:06 1995
fc8c0000 Vga.sys Fri May 05 23:10:10 1995
fc8d0000 Msfs.sys Fri May 05 23:11:57 1995
fc8e0000 Npfs.sys Fri May 05 23:11:40 1995
fc900000 Ndis.sys Mon May 22 20:23:18 1995
fc8f0000 El59x.sys Fri Feb 10 16:18:09 1995
fc940000 Tdi.sys Fri May 05 23:13:09 1995
fc920000 Nbf.sys Mon May 08 15:00:47 1995
fc950000 Netbios.sys Fri May 05 23:13:19 1995
fc960000 Parport.sys Header Paged Out
fc970000 Parallel.sys Header Paged Out
fc980000 Serial.sys Fri May 05 23:11:20 1995
fc990000 Afd.sys Header Paged Out
fc9a0000 Rdr.sys Wed May 17 17:18:16 1995
fc9e0000 Srv.sys Wed May 24 21:56:59 1995
TOTAL: 1ab460 (1709 kb) 3b7c0 ( 237 kb) ( 0 kb 0 kb)
kd>

Tenga en cuenta la hora de creación del archivo, que es la fecha en que se compila el archivo. Esta fecha está cerca de la hora en el archivo real al visualizar la subcarpeta Winnt\System32\Drivers mediante el Administrador de archivos.

Si suscribirse a Microsoft Developers Network (MSDN) o tener Windows Device Driver Kit (DDK), la herramienta Link.exe puede utilizarse para confirmar que el archivo Dbg es el mismo archivo que se creó cuando se compiló el controlador. La "fecha hora" en el ejemplo siguiente coincide con el "tiempo de crear" de Netbios.sys en el resultado anterior.

Utilice Link.exe para comprobar la "marca de fecha de hora" del archivo Dbg:
VÍNCULO - dump - \symbols\sys\netbios.dbg encabezados
Microsoft (R) COFF Binary File Dumper versión 3.00.5270
Copyright (C) Microsoft Corp 1992-1995. Reservados todos los derechos.

Volcado del archivo Netbios.dbg
firma de 4944
indicadores 0
Equipo de 14C (i386)
306 características
2FAAE94F fecha hora Vie 05 de May 13:23:19 1995
8D0B suma de comprobación de imagen

10000 base de imagen

70A0 tamaño de imagen
** Contenido eliminado **

Si el ! drivers comando produce todas las líneas que el siguiente aspecto, una tabla importante en el volcado está dañada. Un análisis más profundo del volcado no sea posible.
No se puede leer DosHeader en 0583002a - estado 00000000
No se puede leer DosHeader en 0587002a - estado 00000000
No se puede leer DosHeader en 0588002a - estado 00000000
No se puede leer DosHeader en 058a002a - estado 00000000
No se puede leer DosHeader en 058c002a - estado 00000000

Unassembling una función

Los archivos de símbolos permiten el depurador del núcleo hacer referencia a funciones y variables globales por nombre. Manchas comprobación un par de funciones sin montar para asegurarse de que son adecuados. Muchas funciones son compilador optimizado y no se ajustan necesariamente a los ejemplos siguientes. Las funciones del compilador optimizado se identifican por el FPO entre paréntesis en el nombre de la función.


Funciones normalmente empiezan con cualquiera "push ebp" o "mov eax, fs [000000000]." Conocimientos básicos de lenguaje de máquina y la experiencia le permitirá uno reconocer estas funciones.
  • Lista de módulos cargados
    x *!
  • Lista de símbolos para un módulo concreto (por ejemplo, Ntoskrnl.exe).
    x nt! *
  • Seleccione una función para desensamblar, es decir, no el compilador optimizado.
    u NT! _NtUnlockFile

Símbolos buena

kd> u NT!_NtUnlockFile
u NT!_NtUnlockFile
NT!_NtUnlockFile:
80156bd8 64a100000000 mov eax,fs:[00000000]
80156bde 55 push ebp
80156bdf 8bec mov ebp,esp
80156be1 6aff push 0xff
80156be3 68200d1080 push 0x80100d20
80156be8 68304f1380 push 0x80134f30
80156bed 50 push eax
80156bee 64892500000000 mov fs:[00000000],esp
kd>

El montable de la función debe ser similar al texto anterior; Sin embargo, el montable está sujeta a cambios. Si le parece adecuado el montable, puede suponer que los símbolos han cargado correctamente para este módulo.


El siguiente montable comienza con "jnz NT! _NTUnlockFile + 0 x 22." Obviamente, el principio de la función no se iniciaría con un código de la instrucción de salto. Compruebe una vez más el árbol de símbolo.

Símbolos incorrectos

kd> u NT!_NTUnlockFile
u NT!_NTUnlockFile
NT!_NtUnlockFile:
801574a4 7520 jnz NT!_NtUnlockFile+0x22 (801574c6)
801574a6 6a00 push 0x0
801574a8 8d45dc lea eax,[ebp-0x24]
801574ab 50 push eax
801574ac 53 push ebx
801574ad ff356c361480 push dword ptr [NT!_CcNoDelay+0x4 (8014366c)]
801574b3 6a01 push 0x1
801574b5 ff7508 push dword ptr [ebp+0x8]

Símbolos de Service Pack

Hay ocasiones en que es difícil hacer coincidir los símbolos con una instalación particular. En algún momento, un servicio podría haberse agregado que necesita copiar archivos desde el CD de instalación de Windows, que copia los archivos que se han actualizado con un service pack. Asegúrese de volver a aplicar el service pack y ningún disco de soporte de terceros después de cambiar la configuración del sistema, que copia archivos desde el CD-ROM de instalación de Windows. Los símbolos se deben aplicar en el mismo orden que en la instalación.

INFORMACIÓN ADICIONAL

Para buscar la serie Kernel depurar How To de los artículos, búsqueda de la palabra clave: debugref.

Técnicas de símbolo de WinDbg 2.0. x

En la versión del depurador 2.0. x y posteriores de los Debuggers de Microsoft hay pasos de comprobación de símbolos adicionales que se pueden utilizar. Para obtener más información, consulte el siguiente sitio Web de Microsoft:
Propiedades

Id. de artículo: 148660 - Última revisión: 9 ene. 2017 - Revisión: 1

Comentarios