2010-12-08 3 views
5

Я пишу какую-то логику для академического источника символов.Как проверить, действительно ли файл pdb действителен для отладки сборки

Мне нужно проверить сборку и файл pdb, если они соответствуют друг другу, чтобы пользователи могли использовать их без каких-либо проблем.

Я сделал небольшое исследование, но ничего не впечатляюще. Если VS получит неправильные символы отладки может отображаться информация:

Следующий модуль был построен либо с оптимизацией включен или без отладки информация: assembly.dll
К отладить этот модуль, изменить свой проект постройте конфигурацию в режиме отладки. К подавить это сообщение, отключить «Предупреждать, если код пользователя при запуске» вариант отладчика.

Мне также интересно, какая информация VS получает от pdb и сборки для их проверки.

Есть ли какой-либо (управляемый) API? Или даже неуправляемый?

Любые идеи?

ответ

2

Я думаю, что имя API Visual Studio использует DIA; это COM API, который вы можете вызывать из C#.

Библиотека Mono.Cecil предоставляет хороший набор классов для доступа к сборкам и их символам; он использует DIA под файлами .pdb. Я бы назвал Сесил непосредственно для этого; если нет, исходный код должен содержать руководство.

+0

спасибо, я предпочитаю любой управляемый API через COM, Mono.Cecil бы неплохо, чтобы получить знаю – satori

+0

Mono.Cecil спас меня много раз –

2

Эта страница содержит отличную статью о деталях файла PDB и DBG. В нем точно описано, что хранится в файле символов, как его прочитать и как определить, соответствуют ли бинарный файл (EXE или DLL) и файл символов (PDB или DBG).

http://www.debuginfo.com/articles/debuginfomatch.html#details

Смежные вопросы