问题
I used windbg.exe to debug the same exe. Each time windbg loads this exe, it will spend a minute to download symbols. On the left-bottom corner of windbg window, it shows ""Downloading symbols [winnt.dll]..."".
I've see this multiple times. I've set my symbol path, and one line is:
************* Symbol Path validation summary **************
Deferred SRV*D:\SymCache\Microsoft*http://msdl.microsoft.com/download/symbols
This is weird to me, as long as I've set the microsoft download URL and the local cache dir, why each time I open windbg to load same exe, windbg will download the same winnt.dll.....?
Thanks.
回答1:
WinDbg does not download symbols again, but it will try to download those files again which it didn't find last time.
In my example, I have downloaded the symbols and it fetched hal.dll
, kdcom.dll
, ntkrnlmp.pdb
and ntoskrnl.exe
.
Doing a .reload
again, it was looking for halaacpi.dll
once more. Monitoring the traffic with Wireshark you can see that:
Please note the insane HTTP roundtrip times of 8+ seconds per request, so it took 66 seconds just to figure out that there's nothing to download. See also: Is WinDbg Supposed to Be So Excruciatingly Slow?
回答2:
If pdb is in local cache symsrv downloads it from there else it downloads from symbolserver local cache can also be a mapped network drive a shared folder in host computer when you are debugging in a virtual machine etc etc diwnloading is a terminology which ststes it is fetching the symbols from somewhere it may be internal or external vize file://. Or http://
来源:https://stackoverflow.com/questions/39324154/ive-set-symbol-path-in-windbg-but-why-each-time-windbg-downloads-same-symbol-f