I've set symbol path in windbg, but why each t

2019-08-04 08:51发布

问题:

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://