Можно ли загружать несоответствующие символы в 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" также попадает в эту категорию.