How to cause Windbg to download the compressed versions of MS public symbols

0

Microsoft state here:

The Microsoft Symbol Server provides compressed versions of the symbol files. The files have an underscore at the end of the filename’s extension to indicate that they are compressed. For example, the PDB for ntdll.dll is available as ntdll.pd_.

I have 2 questions here:

  1. The more general question: How can I cause Windbg to prefer the compressed version of the symbols? This would result in massive bandwidth savings. (Compressing c:\Symbols on my computer resulted in a 68% reduction in size). Sniffing the traffic reveals that the uncompressed version is tried first and then the compressed version (underscore at end of name).

  2. and specific to MS Public Symbols: Are the compressed versions currently available at all? Trying to manually download a compressed versions of ntdll.pdb returns a 404 error.

    >$ 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.
    

Update:

I have now discovered that DbgHelp supports an option called SYMOPT_FAVOR_COMPRESSED which is explained as follows:

If there is both an uncompressed and a compressed file available, favor the compressed file. This option is good for slow connections.

The question now is how to enable this option in Windbg?

This option isn't documented in the officical Windbg documentation and setting it manually seems to only affect the UI level.

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

However inspecting the traffic using fiddler shows that the uncompressed version is still requested first.

debugging
windbg
debug-symbols
asked on Stack Overflow Nov 10, 2018 by yossizahn • edited Nov 12, 2018 by yossizahn

0 Answers

Nobody has answered this question yet.


User contributions licensed under CC BY-SA 3.0