Подтвердить что ты не робот

Формат _NT_SYMBOL_PATH

Я пытаюсь использовать windbg больше, и у меня проблемы с кешем символов. Мне непонятно, какой должен быть формат строки.

У меня есть несколько требований:

  • использовать сервер Microsoft http://msdl.microsoft.com/download/symbols
  • используйте символы из нашего программного обеспечения, архивированные в \\foo\Build1234
  • используйте локальный кеш в каталоге c:\dev\symbols

Архив символов из нашей распределенной сборки в \\foo\Build1234 не организован как сервер символов. Если я правильно понял, мне нужно использовать ключевое слово кеша.

Учитывая эти требования, похоже ли это как правильно отформатированный srvpath:

cache*\\foo\Build1234;srv*c:\dev\symbols*http://msdl.microsoft.com/download/symbols

Edit:

Я только начал читать Advanced Windows Debugging, и я неправильно понял, как работает ключевое слово кеша. Я думал, что это способ сообщить отладчику, что папка - это просто папка файлов, а не сервер символов. После того, как Майкл оставил свой комментарий, я перечитал раздел и увидел, что он действительно работает, как описал Майкл.

Теперь я смущен, когда вы используете; или * для разделения путей/URL-адресов. И когда вам нужен префикс srv *. В онлайн-справке для windbg они приводят следующий пример:

\\someshare\that\cachestar\ignores;srv*c:\mysymbols*http://msdl.microsoft.com/download/symbols;cache*c:\mysymbols;\\anothershare\that\gets\cached

Символы из \\someshare не кэшируются, символы из Microsoft кэшируются в c:\mysymbols, а c:\mysymbols используется как кеш для любых других путей справа от директивы cache *.

Случайное использование srv * меня сбивает с толку - я не понимаю, почему первый и последний пути не имеют префикса srv *.

Изменить 2:

Это постепенно начинает иметь смысл для меня. Директива srv используется для серверов символов, а не для обычных каталогов символов. Итак, я считаю, что ответ на мой оригинальный вопрос таков:

\\foo\Build1234;cache*c:\dev\symbols;srv*http://msdl.microsoft.com/download/symbols
4b9b3361

Ответ 1

SRV*C:\dev\symbols*http://msdl.microsoft.com/download/symbols;\\foo\build1234

Должен работать нормально, если \\foo\build1234 - это просто плоские PDB. Кэш здесь не нужен; вам просто нужно добавить каталог в свой путь к символу.

Ключевое слово cache указывает, где вы хотите кэшировать ваши файлы символов, и полезно для кеширования локально локализованных из неиндексированных акций (например, \\foo\build1234)

cache*C:\dev\symbols;SRV*C:\dev\symbols*http://msdl.microsoft.com/download/symbols;\\foo\build1234

В приведенном выше пути будут храниться символы из сервера символов MS и общий ресурс вашего символа на ваш локальный компьютер в C:\dev\symbols.

Чтобы отлаживать проблемы символов с помощью windbg, do

!sym noisy
.reload <some exe or DLL in your session>

И затем выполните некоторые действия, которые заставят PDB быть загружены. Вы увидите, где windbg ищет файлы, и если он отклоняет PDB, почему он это сделал.

!sym quiet

Затем подавляет приглашения символов.