Я пытаюсь использовать windbg больше, и у меня продолжают возникать проблемы с кэшем символов. Мне не ясно, каким должен быть формат строки.
У меня есть несколько требований:
- использовать сервер Microsoft http://msdl.microsoft.com/download/symbols
- используйте символы из нашего программного обеспечения, которые заархивированы в \\ foo \ Build1234
- использовать локальный кеш на c: \ dev \ symbols
Архив символов из нашей распределенной сборки в \\ foo \ Build1234 не организован как сервер символов. Если я правильно понимаю, мне нужно использовать ключевое слово cache.
Учитывая эти требования, выглядит ли это как правильно отформатированный srvpath:
cache*\\foo\Build1234;srv*c:\dev\symbols*http://msdl.microsoft.com/download/symbols
Edit:
Я только начал читать Advanced Windows Debugging и неправильно понял, как работает ключевое слово cache. Я подумал, что это способ сообщить отладчику, что папка - это просто папка с файлами, а не сервер символов. После того как Майкл оставил свой комментарий, я перечитал этот раздел и увидел, что он действительно работает так, как описал Майкл.
Теперь меня смущает, когда вы используете; или * для разделения путей / 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