WinDbg应该是如此令人难以忍受的缓慢?

Bil*_*ose 4 windbg crash-dumps

我正在尝试分析一些迷你崩溃转储.我正在使用Windows 10 Pro Build 1607和WinDbg 10.0.14321.1024.我将符号文件路径设置为

SRV*C:\SymCache*https://msdl.microsoft.com/download/symbols
Run Code Online (Sandbox Code Playgroud)

基本上,每当我加载一个minidump(所有<1 MB .dmp文件)时,永远需要WinDbg来实际分析它们.我知道第一次运行可能需要很长时间,但是在它让我输入命令之前差不多花了12个小时.我认为,由于符号被缓存,重新打开相同的.dmp将花费很长时间.不是这种情况.它加载,几乎瞬间到"加载内核符号",然后再打印"BugCheck"行再过30分钟.已经过了30分钟,我仍然无法输入命令.

我的电脑有512 GB SSD,8 GB RAM和i5-4590.我认为不应该这么慢.

我究竟做错了什么?

Tho*_*ler 10

这种抱怨似乎最近经常发生,我可以在我的电脑上重现它.这不是你的错,而是微软方面的互联网或符号服务器的一些问题.

使用Wireshark监控流量并查看我的磁盘如何填充符号缓存,我可以说:

  • 一次只下载一个文件.
  • 旧的WinDbg版本也会出现问题(6.2.9200)
  • HTTP和HTTPS出现问题
  • 当找到符号时,传输速度非常慢,然后增加.有效传输速率下降到11 kb/s到20 kb/s(在可以处理6500 kb/s的线路上)
  • 存在相当多的无序数据包,重复数据包等,特别是在尚未下载文件的"查找阶段"期间.这样的查找阶段很容易花费8分钟.
  • 即使文件已存在于磁盘上,也会执行"查找阶段".
  • HTTP往返时间(响应请求)为8到9秒

WinDbg加载内核符号

查找阶段

HTTP往返时间


Rem*_*anu 6

这是符号服务器真的很慢.其他人也注意到了:https://twitter.com/BruceDawson0xB/status/772586358556667904

您的符号路径包含一个本地缓存,因此下次加载速度会更快,但似乎缓存无效,我无法确切说明原因(我怀疑下载的符号不是完美匹配,而是再次下载它们, 每次).

我建议只修改_NT_SYMBOL_PATH(或者你的同情心被初始化的方式)SRV*C:\SymCache,即.不要尝试自动下载,只需使用您已在本地缓存的符号.图像应该打开得相当快.仅在发现缺少的符号时才启用符号服务器.