2016-06-27 2 views
1

У меня есть простая демонстрационная консольная программа для отладки, но удивительно, что windbg не может отображать символы из хранилища Microsoft по умолчанию.WinDbg не может найти символы Microsoft

я

.reload/ф

я получаю резюме:

************* Symbol Loading Error Summary ************** 
Module name   Error 
ConsoleApp    PDB not found : cache* 
       Unable to locate the .pdb file in this location 

       The system cannot find the file specified : SRV*https://msdl.microsoft.com/download/symbols 
       The SYMSRV client failed to find a file in the UNC store, or there 
       is an invalid UNC store (an invalid path or the pingme.txt file is 
       not present in the root directory), or the file is present in the 
       symbol server exclusion list. 

Символы путь к файлу

SRV *

Я пытался работать с pdf-файлами своего приложения, но он даже не может найти символы Microsoft.

Update

После сортировки и другие вопросы, я могу воспроизвести это обратно. Кажется, я просто читал сообщение неправильно. Поскольку сообщение об ошибке указывало на хранилище по умолчанию Microsoft, я прочитал его так, как будто он не нашел указанные файлы в магазине Microsoft ... думая, что это не соединение/поиск/загрузка символов Microsoft, когда на самом деле основная ошибка говорит, что это просто не было Не находите символы своего приложения.

Тем не менее, сообщение не очень понятно. Например, когда я устанавливаю и добавляю дополнительный путь, говорит «Хорошо».

0:000> .sympath srv*c:\test\Symbols*https://msdl.microsoft.com/download/symbols;c:\test\hello 
DBGHELP: Symbol Search Path: srv*c:\test\symbols*https://msdl.microsoft.com/download/symbols;c:\test\hello 
DBGHELP: Symbol Search Path: srv*c:\test\symbols*https://msdl.microsoft.com/download/symbols;c:\test\hello 
Symbol search path is: srv*c:\test\Symbols*https://msdl.microsoft.com/download/symbols;c:\test\hello 
Expanded Symbol search path is: srv*c:\test\symbols*https://msdl.microsoft.com/download/symbols;c:\test\hello 

************* Symbol Path validation summary ************** 
Response       Time (ms)  Location 
Deferred          srv*c:\test\Symbols*https://msdl.microsoft.com/download/symbols 
OK            c:\test\hello 

Теперь, когда я .reload /f резюме символ ошибки загрузки заключается в следующем:

************* Symbol Loading Error Summary ************** 
Module name   Error 
App     The system cannot find the file specified : srv*c:\test\symbols*https://msdl.microsoft.com/download/symbols 
       The SYMSRV client failed to find a file in the UNC store, or there 
       is an invalid UNC store (an invalid path or the pingme.txt file is 
       not present in the root directory), or the file is present in the 
       symbol server exclusion list. 

         PDB not found : c:\test\hello\symbols\exe\App.pdb 
       Unable to locate the .pdb file in this location 

Я не знаю, почему не удалось загрузить в пути PDB not found : c:\test\hello\symbols\exe\App.pdb?

+0

это правильный синтаксис: 'SRV * C: \ символы * https: // msdl.microsoft.com/скачать/symbols' – magicandre1981

+1

Возможный дубликат [Как настроить символы в WinDbg?] (Http://stackoverflow.com/questions/30019889/how-to-set-up-symbols-in-windbg) –

+0

Я больше не получаю эту ошибку, возможно, после выхода из нее и перезапустили windbg – zar

ответ

2

В выходе вашей WinDbg сессии есть

************* Symbol Loading Error Summary ************** 
Module name   Error 
ConsoleApp    PDB not found : cache* 

так есть ошибка модуля нагрузки Ф.О. r ConsoleApp, то есть ваше приложение, а не приложение Microsoft.

Конечно, вы не загрузили символы своего приложения в Microsoft, поэтому символы не могут быть найдены на https://msdl.microsoft.com/download/symbols.

Мне кажется, что ваше приложение

  • либо релиз сборки без символьной информации на всех
  • отладки строить с символьной информации, а символы не найдены в пути, указанном в пределах применение

Поэтому

  • в дополнение к й е сервера символов Microsoft (пожалуйста, используйте .symfix c:\path\to\microsoft-symbols)
  • убедитесь, что вы построили PDB-файлы для вашего приложения (проверьте настройки компилятора и/или компоновщика, в зависимости от языка программирования)
  • добавить свои собственные символы на путь символа (.sympath+ c:\path\to\pdb\).
  • .reload символы

Синтаксис srv*is documented, но на самом деле я никогда не видел кого-то использовать его на практике, потому что люди хотят извлечь выгоду из символов, сохраненных локально, что увеличивает производительность.

Если он все еще не работает, используйте !sym noisyиProcess Monitor для устранения загрузки символов. Фильтр имен файлов для .pdb должен помочь.

Причина этого является

  • даже с !sym noisy, WinDbg не перечисляет все возможные пути, где он на самом деле ищет символы
  • документация для заказа нагрузки символа неверна.

    Файл справки говорит, что символы загружены в указанном порядке

    • X:\...\symbols\<ext>\<filename>.pdb
    • X:\...\<ext>\<filename>.pdb
    • X:\...\<filename>.pdb

    Но порядок загрузки наблюдаемого меня

    • X:\...\<filename>.pdb
    • X:\...\<ext>\<filename>.pdb
    • X:\...\symbols\<ext>\<filename>.pdb
+0

Я могу воспроизвести его после исправления других проблем, как будто я читал его неправильно .. обновил сообщение. – zar

0

что такое srv* среднее - это все, что у вас есть?
где путь?
как говорят c: \ символы или f: \ mycrap \ myuselesssymbols и т. Д. И т. Д.?

путь должен быть чем-то вроде SRV * < локальный каталог > а именно X: \ YYYYYY * http://msdl.microsoft.com/download/symbols

вы можете использовать .symfix установить путь символьный по умолчанию до .reload/ф

+0

Это путь, который он задает для вас .symfix – zar

+0

«Если вы включаете строку srv * в свой путь символа, отладчик использует сервер символов для получения символов из хранилища символов по умолчанию» из [здесь] (https://msdn.microsoft.com/en-us/library/windows/hardware/ff558829(v=vs.85).aspx) – zar

Смежные вопросы