Можно ли загрузить несовпадающие символы в Visual Studio? - PullRequest
14 голосов
/ 07 сентября 2010

У меня есть мини-дамп Windows (код C) и соответствующий исполняемый файл.К сожалению, у меня нет точно совпадающих файлов .pdb, но у меня есть .pdbs, которые содержат точно такой же код, только что созданный в другое время.В Windbg я могу использовать:

.symopt+0x40

, чтобы сказать ему загружать что угодно, даже несоответствующие файлы символов.Это прекрасно работает в данном конкретном случае, и я могу получить правильный стек вызовов.Мне просто любопытно, есть ли в Visual Studio такая функция.Здесь мы используем практически каждую версию VS, поэтому не имеет значения, в какой версии она может быть. Спасибо.

Ответы [ 4 ]

19 голосов
/ 23 сентября 2010

Попробуйте эту утилиту :

Утилита ChkMatch может использоваться для проверки соответствия исполняемого файла и файла отладочной информации.Его также можно использовать для принудительного сопоставления исполняемого файла и файла отладочной информации, если они совместимы.

Для получения дополнительной информации о сопоставлении отладочной информации и связанных с этим проблемах см. Эту статью .

Поддерживаемые форматы отладочной информации: DBG, PDB 2.0, PDB 7.0 ...

4 голосов
/ 18 октября 2010

Переопределения нет, но автор этого вопроса нашел способ изменить файлы PDB, чтобы они соответствовали EXE.

Благодаря одному из комментариев на первый ответ, я проверил ссылку на PDF-файлы книги "Недокументированные Секреты Windows 2000: программисты Кулинарная книга ". И автор переходит в отличная информация о файле pdb формат. Как я уже говорил, у меня было уже загрузил PDB в гекс редактор и перевернул немного кажется, что я сделал соответствие возраста / подписи, но это не так Работа. Ну а после использования утилиты из книги секретов W2k "взорваться" PDB во включенные потоки, я узнал, что они прячут другого ссылка на возраст в потоке 3 !!!!!!! Однажды я перевернул это как хорошо, это совпало в windbg.

Не уверен, если вы хотите пойти на это много неприятностей, но, похоже, это можно сделать. Если это для поддержки производства, то это может стоить вашего времени.

3 голосов
/ 25 октября 2010

Visual Studio и Windbg сопоставляют pdbs, сравнивая временные метки в заголовке исполняемого файла с сохранением временных меток в файле pdb. Вы можете просмотреть отметку времени, запустив dumpin / headers.

Я не использовал chkmatch, но изменение exe или pdb для соответствия друг другу должно работать нормально.

Имейте в виду, что этого метода может быть недостаточно для отладки вашего двоичного файла. Джон Роббинс в своей книге «Отладка Windows» (которую я могу порекомендовать) упоминает, что он видел разные результаты сборки из идентичного дерева исходных текстов, созданного практически в одинаковое время.

Всегда собирайте символы pdb с вашими сборками (включая сборки выпуска) и архивируйте их вместе с продуктами сборки и, если хотите, включите файл .map.

0 голосов
/ 08 сентября 2010

Согласно этому посту можно использовать команды sos windbg также и в Visual Studio. Но я не уверен, что ".symopt" также попадает в эту категорию.

...