ok diese Frage bezieht sich nicht von windbg zu verwenden, oder hat nichts mit _NT_SYMBOL_PATH
Dr.Memory
zu tun, ist ein memory diagnostic tool
verwandt valgrind
und basiert auf Dynamorio instumentation framework
verwendbar auf rohen nicht modifizierten Binärdateien
auf Fenster können Sie es wie drmemory.exe calc.exe
von einer Eingabeaufforderung aufrufen (cmd.exe)
sobald die binäre beendet die Ausführung eine Protokolldatei results.txt
auf einen Standard-Speicherort geschrieben benannt
, wenn Sie es Setup _NT_SYMBOL_PATH drmemory Ehren hatte und Symbolinformationen aus prepulled Symboldatei löst (dh * PDB) ist es nicht scheint Dateien von ms Symbolserver zum Download es einfach scheint die SRV * Cache zu ignorieren und nur das Downstream-Symbol Ordner
so, wenn die pDB-Datei fehlt oder ist nicht noch
heruntergeladen zu verwenden scheint
die results.txt enthält Stapelverfolgung wie
# 6 USER32.dll!gapfnScSendMessage +0x1ce (0x75fdc4e7 <USER32.dll+0x1c4e7>)
# 7 USER32.dll!gapfnScSendMessage +0x2ce (0x75fdc5e7 <USER32.dll+0x1c5e7>)
während, wenn die Symboldatei es Sie
# 6 USER32.dll!InternalCallWinProc
# 7 USER32.dll!UserCallWinProcCheckWow
zeigen würde
also im Grunde brauchen die Symboldatei für appplication in Frage
so wie ich kommentiert Sie die Symbole holen müssen für die exe vorhanden war in Frage
Sie können symchk auch auf einen laufenden Prozess verwenden und erstellen Sie eine Manifest-Datei und Sie können symchk auf einem Computer, der mit dem Internet zum Download verbunden ist verwenden und Symbole kopieren Sie sie in einen lokalen Ordner auf einem non_internet Maschine und Punkt _NT_SYMBOL_PATH in diesen Ordner
>tlist | grep calc.exe
1772 calc.exe Calculator
>symchk /om calcsyms.txt /ip 1772
SYMCHK: GdiPlus.dll FAILED - MicrosoftWindowsGdiPlus-
1.1.7601.17514-gdiplus.pdb mismatched or not found
SYMCHK: FAILED files = 1
SYMCHK: PASSED + IGNORED files = 27
>head -n 4 calcsyms.txt
calc.pdb,971D2945E998438C847643A9DB39C88E2,1
calc.exe,4ce7979dc0000,1
ntdll.pdb,120028FA453F4CD5A6A404EC37396A582,1
ntdll.dll,4ce7b96e13c000,1
>tail -n 4 calcsyms.txt
CLBCatQ.pdb,00A720C79BAC402295B6EBDC147257182,1
clbcatq.dll,4a5bd9b183000,1
oleacc.pdb,67620D076A2E43C5A18ECD5AF77AADBE2,1
oleacc.dll,4a5bdac83c000,1
so vorausgesetzt, Sie haben die Symbole geholt wäre es einfacher, die Tests mit einem lokal im Cache gespeicherten Kopien der Symboldateien erneut ausführen
Wenn Sie die Symbole abgerufen haben, aber die Tests nicht erneut ausführen können und nur mit der Ausgabe von results.txt arbeiten müssen, müssen Sie einige Textverarbeitungsarbeiten ausführen (sed. Grep, awk.oder benutzerdefinierte Parser)
die drmemory Suite kommt mit einem symbolquery.exe im Ordner ist und es kann verwendet werden, um die Symbole von results.txt
im Beispiel zu lösen oben Sie den Offset relativ feststellen können Module wie 0x1c4e7 in der Linie # 6 USER32.dll! gapfnScSendMessage + 0x1ce (0x75fdc4e7 {USER32.dll + 0x1c4e7})
so für jede Zeile in results.txt Sie haben den Offset zu analysieren und aufrufen Symbolquery auf dem Modul wie unten
:\>symquery.exe -f -e c:\Windows\System32\user32.dll -a +0x1c4e7
InternalCallWinProc+0x23
??:0
:\>symquery.exe -f -e c:\Windows\System32\user32.dll -a +0x1c5e7
UserCallWinProcCheckWow+0xb3
ein einfacher Test Verarbeitungs Beispiel aus einem result.txt und einer getrimmten Ausgabe
:\>grep "^#" results.txt | sed s/".*<"//g
# 0 system call NtUserBuildPropList parameter #2
USER32.dll+0x649d9>)
snip
COMCTL32.dll+0x2f443>)
Mitteilung der comctl32.dll (es gibt eine Standard-comctl.dll in system32.dll und einige andere in winsxs Sie haben die anderen Dateien wie global.log konsultieren
symquery.exe -f -e c:\Windows\winsxs\x86_microsoft.windows.common-
controls_6595b64144ccf1df_6.0.7601.17514_none_41e6975e2bd6f2b2\comctl32.dll -a +0x2f443
CallOriginalWndProc+0x1a
??:0
symquery.exe -f -e c:\Windows\system32\comctl32.dll -a +0x2f443
DrawInsert+0x120 <----- wrong symbol due to wrong module (late binding
/forwarded xxx yyy reasons)
die dLL nicht Lastweg zu sehen, dass ich verstehe, was Sie tun das heißen Sie alle Symbole ziehen wollen, die vor erforderlich sind, um den Dump zu Debuggen und verwenden Sie die Symbole in Offline-Modus, wenn ja Check-out Symchk/OM http s: //msdn.microsoft.com/en-us/library/windows/hardware/ff560061 (v = vs.85) .aspx – blabb
Nein. Der Prozess ist nicht abgestürzt, alle Fehler waren nicht-fatal also was ich habe sind Stack-Traces im Ausgabeprotokoll. Ich möchte von ** libeay32.dll + 0x1234 ** zu ** libeay32.dll! SSL_new_ctx [ssl/ssl3.cpp: 1234] ** gehen. – patraulea
Normalerweise gehen die Symbole in einen lokalen Cache, so dass sie nur beim ersten Mal langsam sein sollten und die Dinge normalerweise schneller werden. –