Я пытаюсь отладить StackOverflow в пакете EntityFramework NuGet (версия 6.1.3). Чтобы увидеть кадры стека, мне нужен файл PDB для EntityFramework.DLL и EntityFramework.SqlServer.DLL. Однако я не могу заставить Visual Studio загружать это из источников символов MSFT или из SymbolSource.org(я могу получить другие системные PDB и такие вещи, как NewtonSoft.json). Доступны ли PDB EF в любом месте?
Как я могу получить PDB файл для пакета EntityFramework NuGet?
Ответ 1
Теперь с картинками (так как мне понадобилось около часа проб и ошибок)
-
Получить DotPeek от Jetbrains (автономная версия)
-
Откройте
DotPeek→File→Open→ перейдите в папку проектаbinи откройтеEntityFramework.dll -
Right mouse на
EntityFramework, затем выберитеGenerate Pdb...![введите описание изображения здесь]()
-
Перейдите в папку, в которую вы ее экспортировали, и откройте папку
EntityFramework.pdb(я знаю правильно!), а затем углубитесь, пока не найдете файлEntityFramework.pdbи скопируйте его в папкуbin(рядом сEntityFramework.dll). -
Перейдите к
Visual Studio→DEBUG→Options and Settings...→Symbols, затем добавьте свою папкуbinвSymbol file (.pdb) locations
- Запустите проект и помолитесь, чтобы эти точки останова стали зрелыми.
Изменить: Иногда он запускает EF в режиме optimized, что делает отладочную работу практически бесполезной, что является целым рядом с этим вопросом - если это произойдет
- Перейдите к
Visual Studio→DEBUG→General→ (в самом низу)Use Managed Compatibility Mode. Tick и Run project (если он оптимизирован, затем отключите и запустите, затем снова нажмите и запустите, затем...)
- Чтобы убедиться, что
EFработает оптимизирован без необходимости ждать, пока он не достигнет точки останова Перейти кVisual Studio→DEBUG→Windows→Modules. Затем, когда вы запускаете модули решений (2), должны появиться. Щелкните по нему и найдитеEntityFramework.dllдолжен быть столбец с надписью Optimized (Yes= bad,No= вы можете его отладить).
Надеюсь, это сэкономит вам некоторое время.
Ответ 2
Загрузите исходный код: структура сущности на codeplex
Кнопка загрузки находится в подменю на вкладке "Источник"
После загрузки:
-
Построить решение/проект
-
Перейдите в каталог bin NB: он не находится в обычном месте, его значение установлено на
"..\..\bin\Debug\". См. Свойства проекта.
Здесь есть EntityFramework.pdb и EntityFramework.SqlServer.pdb.
Также подумал бы, что он будет доступен по умолчанию или проще.
Ответ 3
Один из способов - использовать dotpeek в качестве сервера символов (загрузить dll framework для платформы load add и добавить dotpeek serer адрес, скопированный из настроек dotpeek) - что отлично подходит для этого подхода, что он сгенерировал pdb-совместимое использование версии dll автоматически, что не так здорово - он не будет содержать исходные комментарии из исходного кода и т.д.




