Можно ли загружать несоответствующие символы в Visual Studio?

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

.symopt+0x40

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

Ответы

Ответ 1

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

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

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

Ответ 2

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

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

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

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

Ответ 3

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

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

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

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

Ответ 4

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