2012-06-11 8 views
14

Ich bin ein Modul Debugging, für die ich nur die EXE und eine PDB ohne private Symbole haben.
Während der Debug-Sitzung muss ich eine interne Struktur überprüfen. Offensichtlich erscheint diese Struktur nicht in der PDB, da sie privat ist - aber zum Glück habe ich eine .h-Datei, in der diese Struktur definiert ist. Daher kann ich ein Dummy-Modul erstellen, das diese Struktur verwendet und eine PDB-Datei erhält, die diese Struktur enthält.Forcing WinDbg Symbole eines entladenen Moduls zu laden

Jetzt habe ich ein unloaded Modul mit den Struktursymbolen, und ich möchte seine Symbole laden, um etwas Speicher auf diese Struktur zu werfen. (Ohne das Original .exe Entladen mir das Debuggen, natürlich)
Das Problem: es scheint, dass WinDbg nur Laden Symbole für geladene Module erlaubt ...

Meine Frage ist: Gibt es eine einfache Art und Weise kann ich lade meine Symbole aus dem entladenen Modul?

Ich habe versucht .reload /i /f MyDll.dll, aber ich bekomme immer ...MyDll.dll - unmatched.
Die Einstellung der Sympathie hat nicht geholfen.

Irgendwelche Ideen?

Antwort

15

Sie können windbg zwingen, Symbole an einer bestimmten Adresse zu laden, z.

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 

Die unerreichte Warnung hier ist, weil windbg kann nicht sagen, dass die Symbole die richtige Version des Moduls übereinstimmen, da es keine Zeitstempel oder Prüfsumme finden.

+0

Wo bekomme ich die Adresse zum Laden der DLL .. – 51k

17

Ein besserer Weg ist .reload /unl MyDll.dll

Unloaded Modulliste enthält Zeitstempel (für die Bild/pdb matching) und Bildbasisadresse. Mithilfe von /unl wird WinDBG angewiesen, diese Informationen zu verwenden.

+1

danke: Ihr Befehl ist die einzige Variante, die für mich gearbeitet hat! – olegvs

+0

Das hat auch für mich funktioniert .. – 51k