2016-07-18 5 views
2

После загрузки библиотеки DLL с использованием LoadLibrary("file.dll") визуальная студия также открывается и блокирует file.pdb.Как заставить Visual Studio 2015 разблокировать файл .PDB после вызова FreeLibrary?

Проблема в том, что file.pdb не блокируется даже после звонка FreeLibrary(...).

Необходимо перекомпилировать file.dll и перезагрузить его еще раз (снаружи, вне МСВС, используя CL.exe), но компиляция терпит неудачу, потому что file.pdb по-прежнему заблокирован.

Как заставить Visual Studio 2015 освободить блокировку файлов?

ответ

3

совпадению я наткнулся на решение этой проблемы:

Перейти к Tools -> Options затем Debugging -> General, затем включите Use Native Compatibility Mode.

Это исправляет проблему (, например, файл .pdb разблокируется после выгрузки .dll сейчас).

Я не знаю, почему, поскольку я не могу найти документацию для Use Native Compatibility Mode.

+0

Это настройка VS2015, она вынуждает отладчик использовать более старый механизм отладки. Используется в VS2013. Разумная настройка нового двигателя довольно затруднительна. Кто-то должен сообщить об ошибке на сайте connect.microsoft.com, я буду добровольцем. –

+0

@HansPassant. Была обнаружена аналогичная ошибка, зарегистрированная для MSVS 2013, и она помечена как закрытая, как в «Не исправлена» https://connect.microsoft.com/VisualStudio/feedback/details/1026184/visual-studio-keeps-locking -the-pdb-file-even-after-the-dll-release-using-freelibrary. Поэтому я даже не потрудился. Также есть интересный комментарий от Andrew Hall @ MSFT: «К сожалению, отладчик Visual Studio никогда не поддерживал выгрузку pdb, когда двоичный файл выгружается из процесса, он всегда требовал, чтобы отладка была остановлена». Возможно, это было изменено? – JBeurer