如何使Windbg下载MS公共符号的压缩版本

时间:2018-11-10 23:30:34

标签: debugging windbg debug-symbols

Microsoft状态here

  

Microsoft Symbol Server提供符号的压缩版本   文件。文件名末尾带有下划线   扩展名,指示它们已被压缩。例如,PDB   ntdll.dll可以作为ntdll.pd_获得。

我在这里有2个问题:

  1. 更常见的问题:如何使Windbg更喜欢符号的压缩版本?这将节省大量带宽。 (在我的计算机上压缩c:\ Symbols可使大小减小68%)。 嗅探流量显示,首先尝试未压缩版本,然后再尝试压缩版本(名称末尾加下划线)。

  2. 且特定于MS Public Symbols :压缩版本当前是否完全可用?尝试手动下载ntdll.pdb的压缩版本会返回404错误。

    >$ wget https://msdl.microsoft.com/download/symbols/ntdll.pdb/38A5841BD353770D9C800BF1AF6B17EB1/ntdll.pdb
    ... 
    ntdll.pdb                                 100%[=====================================================================================>]   1.46M   406KB/s    in 4.4s
    2018-11-11 01:16:56 (341 KB/s) - ‘ntdll.pdb’ saved [1534976/1534976]
    
    >$ wget https://msdl.microsoft.com/download/symbols/ntdll.pdb/38A5841BD353770D9C800BF1AF6B17EB1/ntdll.pd_
    ....
    HTTP request sent, awaiting response... 404 Not Found
    2018-11-11 01:17:01 ERROR 404: Not Found.
    

更新

我现在发现DbgHelp supports an option called SYMOPT_FAVOR_COMPRESSED的解释如下:

  

如果同时存在未压缩文件和压缩文件,请使用压缩文件。此选项适用于慢速连接。

现在的问题是如何在Windbg中启用此选项?

the officical Windbg documentation中未记录此选项,手动设置似乎仅影响UI级别。

0:003> .symopt+ 0x800000
Symbol options are 0x830337:
  0x00000001 - SYMOPT_CASE_INSENSITIVE
  0x00000002 - SYMOPT_UNDNAME
  0x00000004 - SYMOPT_DEFERRED_LOADS
  0x00000010 - SYMOPT_LOAD_LINES
  0x00000020 - SYMOPT_OMAP_FIND_NEAREST
  0x00000100 - SYMOPT_NO_UNQUALIFIED_LOADS
  0x00000200 - SYMOPT_FAIL_CRITICAL_ERRORS
  0x00010000 - SYMOPT_AUTO_PUBLICS
  0x00020000 - SYMOPT_NO_IMAGE_SEARCH
  0x00800000 - SYMOPT_FAVOR_COMPRESSED

但是,使用fiddler检查流量后,仍然需要首先请求未压缩的版本。

0 个答案:

没有答案