Ошибка, связанная с символами, несмотря на указание на сервер символов Microsoft - PullRequest
1 голос
/ 09 сентября 2011

Попытка отладки файла дампа в Windbg.Это управляемый, который взаимодействует с некоторыми родными библиотеками Microsoft.Я установил путь к символу .sympath SRV * c: \ SymbolsCash *http://msdl.microsoft.com/download/symbols.

Я загрузил SOS без проблем.Я могу запускать команды SOS без каких-либо ошибок.Я также могу выполнить большую часть команды Windbg нормально (например, ~, kb, .time и т. Д.), Однако для некоторой команды (например,! Address -summary) я получаю следующую ошибку.

Ваш отладчикне используются правильные символы
Чтобы эта команда работала правильно, ваш путь к символу
должен указывать на файлы .pdb, которые содержат полную информацию о типе.

Некоторые файлы .pdb (например, общедоступные символы ОС) не
содержат необходимую информацию.Свяжитесь с группой, которая
предоставила вам эти символы, если вам нужна эта команда для
работы.
Тип ссылки: ntdll! _NT_TIB

Есть идеи, что мне здесь не хватает?

Ответы [ 3 ]

6 голосов
/ 11 сентября 2011

Из вашего вывода мы видим, что у вас нет символов для ntdll. Обратите внимание на строку (3-й в выводе выше), которая говорит, что вы используете «символы экспорта». Это означает, что у вас нет символов для этого модуля, а отладчик использует только записи из таблицы экспорта модуля. Необходимая структура не включена в ограниченную информацию, которая является таблицей экспорта.

Ваш путь к символу должен выглядеть следующим образом:

SRV*<local symbol cache directory>*http://msdl.microsoft.com/download/symbols

пример:

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

Если вы правильно настроили путь к символам, вы можете включить детальную загрузку символов, выполнив:

!sym noisy

Затем принудительно перезагрузите ntdll.dll:

.reload /f ntdll.dll

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

!sym quiet

Кроме того, я предпочитаю !lmi <binary> (например, !lmi ntdll) над lmvm при устранении неполадок при загрузке символов. Вывод немного яснее о том, что у вас есть. В конце вывода !lmi вы увидите строку «Загрузить отчет».

0 голосов
/ 10 сентября 2011

@ snoone: ниже вывод команды lmv mntdll 0: 000> lmv mntdll
имя начального и конечного модуля
76e40000 76f7c000 ntdll (символы экспорта) ntdll.dll
Файл изображения загруженного символа: ntdll.dll
Путь к изображению: C: \ Windows \ System32 \ ntdll.dll
Имя изображения: ntdll.dll
Метка времени: сб 20 ноября 07:05:02 2010 (4CE7B96E)
Контрольная сумма: 001490D9
Размер изображения: 0013C000
Версия файла: 6.1.7601.17514
Версия продукта: 6.1.7601.17514
Флаги файла: 0 (маска 3F)
Файл ОС: 40004 NT Win32
Тип файла: 2.0Dll
Дата файла: 00000000.00000000
Переводы: 0409.04b0
Название компании: Microsoft Corporation
Имя продукта: Microsoft® Windows® Operating System
Внутреннее имя: ntdll.dll
OriginalFilename: ntdll.dll
ProductVersion: 6.1.7601.17514
FileVersion: 6.1.7601.17514 (win7sp1_rtm.101119-1850)
FileDescription: NT Layer DLL
LegalCopyright: © Microsoft Corporation.Все права защищены.

0 голосов
/ 09 сентября 2011

Что говорит lmv mntdll?

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

...