我已经在 windbg 中设置了符号路径,但为什么每次 windbg 为同一个 exe 下载相同的符号?

I've set symbol path in windbg, but why each time windbg downloads same symbol for same exe?

我用 windbg.exe 来调试同一个 exe。每次 windbg 加载这个 exe 时,它​​都会花一分钟时间来下载符号。在windbg的左下角window,显示“"Downloading symbols [winnt.dll]..."”。

我已经看过很多次了。我已经设置了我的符号路径,其中一行是:

************* Symbol Path validation summary **************
Deferred SRV*D:\SymCache\Microsoft*http://msdl.microsoft.com/download/symbols

这对我来说很奇怪,只要我设置了微软下载URL和本地缓存目录,为什么每次打开windbg加载相同的exe,windbg都会下载相同的winnt.dll.....?

谢谢。

如果 pdb 在本地缓存中,symsrv 会从那里下载它,否则它会从 symbolserver 本地缓存中下载,也可以是映射的网络驱动器,当您在虚拟机中调试时,主机中的共享文件夹等等,diwnloading 是一个术语它正在从某个地方获取符号,它可能是内部或外部 vize 文件://。或 http://

WinDbg 不会再次下载符号,但会尝试再次下载上次未找到的那些文件。

在我的示例中,我下载了符号,它获取了 hal.dllkdcom.dllntkrnlmp.pdbntoskrnl.exe

再做一次.reload,又在找halaacpi.dll一次。使用 Wireshark 监控流量,您可以看到:

请注意每个请求 8 秒以上的疯狂 HTTP 往返时间,所以花了 66 秒才弄清楚没有什么可下载的。另见: