PDB не соответствует ошибке изображения в проекте C # VS2010

Я уже некоторое время использую библиотеку в своей кодовой базе, и мне хотелось отладить ее прямо на уровне библиотеки. Для этого я загрузил исходный код и включил проект как существующий в свое решение C #. Затем у меня были другие мои проекты, ссылающиеся на этот проект вместо загруженного .DLL.

После того, как вместо библиотеки DLL была указана ссылка на проект, я пропустил свое решение через отладчик и попытался перейти к вызову функции, которая вызывала бы внешний проект, но он перешагнул через него. Во время отладки я открыл окно «Модули» и увидел, что статус символа библиотеки DLL читается как «PDB не соответствует изображению», что является вероятной причиной невозможности отладки этого проекта.

Мой вопрос прост: почему PDB не соответствует изображению, если мой проект напрямую ссылается на файл .csproj в качестве ссылки? Никогда не должно быть двусмысленности в том, какую версию запускать.


person Chris    schedule 10.12.2013    source источник
comment
Попробуйте очистить раствор.   -  person SLaks    schedule 10.12.2013
comment
Настроен ли у вас проект, на который указывает ссылка, для построения отладочных символов?   -  person Darren Kopp    schedule 10.12.2013
comment
@SLaks Очистка раствора не решает проблему. Файл .pdb присутствует в папке сборки (вместе с dll)   -  person Chris    schedule 10.12.2013
comment
@DarrenKopp Он определенно настроен для создания отладочных символов. Я проверил, что файлы pdb также присутствуют   -  person Chris    schedule 10.12.2013
comment
Отметка времени в файле PDB соответствует времени компиляции?   -  person Francis Ducharme    schedule 10.12.2013
comment
Я помню, как однажды исправил это, загрузив символы вручную (в окне «Модули» щелкните правой кнопкой мыши, выберите «Загрузить символ-› Путь к символу »). После этого мне больше не потребовалось.   -  person Francis Ducharme    schedule 10.12.2013


Ответы (5)


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

Если это происходит, убедитесь, что у вас нет других запущенных приложений или открытых экземпляров VS, которые ссылаются на вашу DLL, а затем найдите и удалите все копии PDB из-под папок BIN и OBJ, а затем перекомпилируйте его.

Надеюсь, это поможет.

person rory.ap    schedule 10.12.2013
comment
Кажется, это половина проблемы. Закрытие всего остального, что могло бы использовать эти DLL / PDB, похоже, не помогает. Однако, если я перезаписываю файлы DLL / PDB в каталоге / bin моего приложения с помощью dll из каталога / bin библиотеки, все работает, как ожидалось. Итак, похоже, что что-то не так с тем, как файлы копируются в каталог / bin моего приложения. Странное поведение. В любом случае, это не идеально, но ручное копирование файлов работает в краткосрочной перспективе. Спасибо - person Chris; 12.12.2013
comment
Это была моя проблема. Я пытался выполнить отладку в VS, пока он работал в командном окне. - person Richard Brightwell; 02.11.2017
comment
@ Крис абсолютно прав. Я только что проверил на своем конце и обнаружил, что размер и дата изменения обеих DLL различаются, но они должны быть одинаковыми. Я копирую файлы DLL и PDB в событие post build, и я предполагаю, что он не копирует последний файл dll в папку назначения. - person Ankush Jain; 21.03.2018
comment
Решение: мне пришлось остановить IIS и построить проект. Затем он скопировал все мои файлы, как и ожидалось. - person Ankush Jain; 21.03.2018

Иногда это происходит из-за того, что вы могли собрать проект как релиз.

Щелкните решение правой кнопкой мыши и выберите «Пакетная сборка»> «Проверьте все свои проекты» и нажмите «Очистить».

person DJ'    schedule 08.09.2014

Для меня это произошло с надстройкой Excel. Я зашел в окно модулей, чтобы узнать, почему он не загружается для моей dll. Я посмотрел на папку, в которой находился .dll, и пошел туда. В этом месте был файл .ini. Открытие его показало расположение установки моего приложения, которое оказалось в "C: \ Program Files \", а не расположение bin \ debug моего проекта.

В основном у меня уже была установлена ​​старая версия надстройки, которая загружалась, когда я пытался отладить проект. Я удалил старый проект, удалил старое расположение .dll в "C: \ Users [user] \ AppData \ Local \ assembly \ etc ..." и вуаля, отладчик загрузил недавно скомпилированную dll.

person Lenny K    schedule 24.01.2017

Столкнулся с той же проблемой, это было связано со старой сборкой и последней PDB. Между ними было несоответствие. Сборка была собрана правильно, но снова мой сценарий копирования dll после сборки перезаписывал его более старым. Удаление dll из сценария пост-сборки решило проблему. Необходимо убедиться, что dll или pdb обновлены, когда наконец начнется отладка.

person Neeraj Bopalkar    schedule 16.03.2017

Это случилось со мной сегодня, когда я пытался отладить плагин notepad ++ dll, мне пришлось изменить выходной каталог сборки на каталог плагинов notepad ++ и настроить отладчик для запуска notepad ++ вместо текущей dll проекта, чтобы продолжить с установленной точкой останова. Это свело меня с ума, поскольку Visual Studio 2019 сообщала мне, что СИМВОЛЫ не были загружены для библиотеки DLL плагина, которую я пытался отлаживать.

Наконец, проверка измененной даты и времени, как предлагали другие, заставила меня понять, что pdb не обновлен с временной меткой dll вывода сборки. Я попытался перестроить решение, но сгенерированный pdb имеет ту же более старую временную метку, хотя я удаляю их вручную и запускаю сборку. Так что все, что мне нужно было сделать, это внести изменения в исходный код, удалив пробел и перестроив его. Вуаля! на этот раз у меня есть отладчик, который автоматически загружает символы для моей dll и достигает установленной точки останова.

Возможно, очистка раствора тоже могла сработать.

person mahee96    schedule 12.10.2019