Как настроить сервер символов Windows

У меня есть запасной сервер в сети, на котором я хотел бы разместить все наши символы сборки. Я уже знаю, как настроить кэш символов в моей локальной системе разработки и указать моему отладчику (например, Windbg) на этот путь в «Путь к символьному файлу». Я предположил, что я мог бы сделать то же самое с другой системой в сети, которая имеет свой собственный кэш символов (например, \\ хост \ символы).

Я настроил сервер и включил общий доступ к файлам в каталоге, чтобы иметь возможность удаленного доступа к нему через проводник Windows. Однако, когда я пытаюсь указать на него в WinDbg, он, кажется, не подхватывает символы там.

Путь к символьному файлу устанавливается следующим образом:

srv*\\192.168.1.20\symbolpath*http://msdl.microsoft.com/download/symbols

Кажется, что я не настраиваю его правильно на сервере — есть ли шаг, который я могу пропустить?

7

Решение

Есть несколько вещей, которые нужно знать при настройке сервера символов и / или общего ресурса сети символов.

Порядок загрузки символов WinDbg

Символы ищутся в пути символа от начала до конца, то есть в пути символа C:\a;C:\bбудет сначала заглядывать в C:\a а затем в C:\b, Хотя это не имеет большого значения, это сильно влияет на производительность. Если у вас есть свои собственные символы, всегда ставьте их на первое место, чтобы сохранить обратную передачу HTTP на сервер Microsoft.

Типы магазинов символов

Существует три типа магазинов символов:

  • Локальное хранилище (каталог на вашем диске)
  • Серверное хранилище (сетевой ресурс)
  • Сервер символов / HTTP-хранилище (с HTTP-URL)

Уровни магазина символов

У вас может быть три типа хранилищ символов, и вы не должны смешивать их в одном каталоге:

  • 0-уровневый или просто плоский список файлов PDB, обычно создаваемых как выходные данные сценария сборки или операции копирования / вставки.
  • 2-й уровень: символы хранятся как <filename>.pdb\<hash>\<filename>.pdb, Вы узнаете двухуровневое хранилище символов из существующего пустого (0 байт) pingme.txt файл и 000Admin папка. Не удаляйте их.
  • 3 уровня: символы хранятся как <fi>\<filename>\<hash>\<filename>.pdb>, Вы узнаете трехуровневое хранилище символов из пустого (0 байт) index2.txt файл. Не удаляйте это. Предполагается, что 3-х уровневый магазин увеличит производительность.

Вы можете поместить символы из 0-уровневого магазина в 2- или 3-уровневый магазин, используя symstore.exe который поставляется с WinDbg.
Вы можете преобразовать 2-х уровневый магазин в 3-х уровневый магазин, используя convertstore.exe, В случае ошибок, см. Мою статью Ошибки Convertstore.

Создание «сервера символов»

То, что вы настроили, это не сервер символов, это хранилище символов сервера, потому что вы используете (и хотите использовать) сетевой ресурс, а не веб-сервер HTTP. Ниже приведены шаги для его настройки:

  1. Создать новый пустой каталог на сервере
  2. Предоставьте общий доступ к папке с правом записи, если вы хотите добавить символы с другого компьютера. Доступ для чтения должен быть достаточным, если вы добавляете символы с самого сервера (например, если сервер является сервером непрерывной интеграции, который создает исполняемые файлы).
  3. Бежать symstore add /3 /f "Filename.pdb" /s "\\server\symbols" /t "Title" если вы хотите добавить символы с другого компьютера или использовать /s "C:\share\symbols" если вы добавите их локально.

Повторите шаг 3 для всех версий файлов PDB, которые вы хотите добавить. Вы также можете использовать подстановочные знаки, такие как *.pdb, В идеале вы интегрируете этот шаг в процесс сборки.

Использование сетевого ресурса в WinDbg

Из соображений производительности разработчики хотят локально кэшировать ваши собственные символы из сети, а также символы Microsoft. Поэтому давайте сначала создадим такой локальный кеш:

.sympath cache*C:\Symbols

Я обычно позволяю папке кеша сжиматься NTFS, потому что символы сжимаются довольно хорошо.

Далее, давайте сначала найдем собственные символы, чтобы избежать поездки в Microsoft:

.sympath+ \\server\symbols

Наконец, попробуйте скачать все остальное от Microsoft:

.symfix+

Если вы немного узнаете о WinDbg Workspaces, вы можете сохранить настройку пути символа в рабочей области, чтобы вам не приходилось вводить все это в каждом сеансе отладки. К сожалению, это не работает, если вы поместите все это в одну строку, разделенную точкой с запятой (я не очень понимаю, почему), но вы можете ввести .sympath сейчас и скопируйте результат. Так должно быть

cache*c:\symbols;\\server\symbols;SRV*http://msdl.microsoft.com/download/symbols

Потенциальные проблемы

Я не мог воспроизвести это сейчас, но я помню некоторые проблемы. Причина была в следующем: WinDbg не будет запрашивать учетные данные при доступе к сетевому ресурсу. Обходной путь: если вы не получаете символы от \\server\symbolsоткройте эту сетевую папку в Windows Explorer. Explorer запросит учетные данные, и они будут кэшироваться Windows и, таким образом, будут использоваться WinDbg неявно.

14

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector