VS IDE и WinDbg говорят, что не могут найти файл символов - PullRequest
0 голосов
/ 13 апреля 2020

Итак, я в основном использую VS IDE для отладки. Я получил файл дампа и попытался сделать посмертное на нем. Все библиотеки DLL загрузили свои соответствующие PDB, кроме одной, и я не знаю точно, почему. Эта информация была бы полезна при определении, был ли файл дампа поврежден каким-либо образом, или если у клиента есть поврежденная DLL.

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

Итак, вопрос в том, что мешает конкретной PDB не совпадать с файлом дампа, и как я могу узнать, что это за информация есть

1 Ответ

0 голосов
/ 13 апреля 2020

Символы имеют га sh и метку времени. Оба должны совпадать, чтобы загрузить символы. В WinDbg есть опция принудительной загрузки символов, которые не совпадают (.symopt+ 0x40). Visual Studio не имеет такой опции, поэтому вам нужно использовать chkmatch , чтобы символы совпадали. Обратите внимание, что это опасная операция, поскольку она изменяет файл PDB. Вам следует создать резервную копию и удалить измененный файл после того, как вы закончите.

Если вы не можете выяснить, какой именно исполняемый файл находится в файле дампа, попробуйте .writemem <FileName> <Range> с начальным адресом исполняемого файла. и его размер. См. Также Как получить сборку из необработанного дампа памяти? .

Для проверки файла дампа на наличие повреждений я знаю только о DumpChk , который поставляется с WinDbg. AFAIK, формат файла не позволяет обнаруживать однобайтовые искажения или аналогичные.

Я обновил пути к символам в каталоге с PDB

Вы должны настроить сервер символов . С сервером символов не нужно искать символы или настраивать каталоги.

...