Как заставить Windbg скачивать сжатые версии публичных символов MS - PullRequest
0 голосов
/ 11 ноября 2018

Microsoft state здесь :

Microsoft Symbol Server предоставляет сжатые версии символа файлы. Файлы имеют подчеркивание в конце имени файла расширение, чтобы указать, что они сжаты. Например, PDB для ntdll.dll доступен как ntdll.pd _.

У меня есть 2 вопроса здесь:

  1. Более общий вопрос: Как я могу заставить Windbg предпочесть сжатую версию символов? Это приведет к значительной экономии пропускной способности. (Сжатие символов c: \ на моем компьютере привело к уменьшению размера на 68%). Обнюхивание трафика показывает, что сначала пробуется несжатая версия, а затем сжатая (подчеркивание в конце имени).

  2. и относится к общедоступным символам MS: Доступны ли в настоящее время сжатые версии вообще? Попытка вручную загрузить сжатые версии 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 поддерживает опцию SYMOPT_FAVOR_COMPRESSED , которая объясняется следующим образом:

Если имеется как несжатый, так и сжатый файл, предпочтите сжатый файл. Эта опция хороша для медленных соединений.

Вопрос теперь в том, как включить эту опцию в Windbg?

Этот параметр не задокументирован в официальной документации Windbg , и его установка вручную влияет только на уровень пользовательского интерфейса.

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 показывает, что несжатая версия все еще запрашивается первой.

...