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