我使用windbg.exe来调试同一个exe。每次windbg加载此exe时,它将花费一分钟来下载符号。在windbg窗口的左下角,它显示""正在下载符号[winnt.dll] ...""。
我多次看到这个。我设置了我的符号路径,一行是:
************* Symbol Path validation summary **************
Deferred SRV*D:\SymCache\Microsoft*http://msdl.microsoft.com/download/symbols
这对我来说很奇怪,只要我设置了微软下载URL和本地缓存目录,为什么每次打开windbg加载相同的exe时,windbg都会下载相同的winnt.dll ... ..?
感谢。
答案 0 :(得分:3)
WinDbg不会再次下载符号,但会尝试再次下载上次未找到的文件。
在我的示例中,我已下载了符号,并提取了hal.dll
,kdcom.dll
,ntkrnlmp.pdb
和ntoskrnl.exe
。
再次执行.reload
,它再次寻找halaacpi.dll
。使用Wireshark监控流量,您可以看到:
请注意每次请求的疯狂HTTP往返时间为8秒以上,因此需要66秒才能确定无需下载任何内容。另见:Is WinDbg Supposed to Be So Excruciatingly Slow?
答案 1 :(得分:1)
如果pdb在本地缓存中,symsrv从那里下载它从符号服务器本地缓存下载它也可以是映射网络驱动器当你在虚拟机等中调试时主机中的共享文件夹等diwnloading是ststes的术语它从某个地方获取符号,它可能是内部或外部vize文件://。或者http://