2012-06-11 10 views
14

Estoy depurando un módulo para el que solo tengo el .exe y un .pdb sin símbolos privados.
Durante la sesión de depuración necesito inspeccionar una estructura interna. Obviamente, esta estructura no aparece en el AP debido a que es privada, pero afortunadamente tengo un archivo .h donde se define esta estructura. Por lo tanto, puedo construir algún módulo ficticio que use esta estructura y obtener un archivo PDB que contenga esta estructura.Forzar a WinDbg a cargar símbolos de un módulo descargado

Ahora tengo un módulo descargado con los símbolos struct, y me gustaría cargar sus símbolos para echar algo de memoria a esa estructura. (Sin descargar el .exe original que estoy de depuración, por supuesto)
El problema: parece que sólo permite WinDBG símbolos de carga para los módulos cargados ...

Mi pregunta es: ¿Hay una manera simple que podría cargar mis símbolos desde el módulo descargado?

He intentado .reload /i /f MyDll.dll pero siempre obtengo ...MyDll.dll - unmatched.
Establecer la simpatía no ayudó.

¿Alguna idea?

Respuesta

15

Puede obligar a windbg a cargar símbolos en una dirección específica, p.

0:000> .reload /f /i MyDll.dll=77777777 
    c:\sym\MyDll.pdb - unmatched 
0:000> lm 
start    end     module name 
00000000`55555555 00000000`55555555 notepad (no symbols) 
00000000`77530000 00000000`7762a000 USER32  (deferred) 
00000000`77777777 00000000`77777777 MyDll_77777777 (private pdb symbols) c:\sym\MyDll.pdb 

La advertencia sin precedentes aquí es porque windbg no se puede decir que los símbolos coinciden con la versión correcta del módulo, ya que no puede encontrar ninguna indicación de la hora o la suma de comprobación.

+0

Donde puedo obtener la dirección para cargar el dll .. – 51k

17

Una mejor manera es .reload /unl MyDll.dll

lista de módulos sin carga contiene marca de tiempo (para una imagen coincidente/AP) y la dirección de base de imagen. Usando /unl le dice a WinDBG que use esa información.

+1

gracias: ¡su orden es la única variación que funcionó para mí! – olegvs

+0

Esto funcionó para mí también ... – 51k

Cuestiones relacionadas