PDB остается открытым после отладки (Windows 10, Visual Studio) - PullRequest
0 голосов
/ 12 февраля 2019

В наших предыдущих системах разработки использовались Windows XP и Windows 7. Отладка библиотек C ++ из Visual Studio работала отлично.

Недавний переход на Windows 10 привел к раздражающей проблеме.Мы можем отладить один раз (используя F5), но второй раз приводит к ошибке компоновщика:

MyProg fatal error LNK1201: error writing to program database 'MyProg.pdb'

Попытка удалить файл .pdb вручную в Проводнике, пока Visual Studio все еще открыт, приводит к ошибке:

The action can't be completed because the file is open in devenv.exe

Не имеет значения, достигли ли вы точки останова или нет.Просто начните отладку, как только возникнет проблема.Перезапуск Visual Studio решает проблему (в том смысле, что вы можете отладить один раз, но затем вы получите проблему снова).

При необходимости:

  • x86 Visual Studio 2003.NET
  • для другого приложения x86
  • x64 Windows 10 Pro v1803

Ответы [ 2 ]

0 голосов
/ 28 августа 2019

В моем случае это было связано с программой «Process Explorer», которая была открыта вместе с моей Visual Studio (я использовал ее для проверки некоторых свойств созданного мной exe-файла).После закрытия проблема решена.

0 голосов
/ 12 февраля 2019

После нескольких часов охоты некоторые связались, но без ответа , вопросы были найдены.Следующие предложения в этой статье MSDN , наряду с моей собственной отладкой, это решение работает:

  • Загрузка FreePDB , сценарий, написанный пользователем MSDN Toni76 (спасибо Тони!)
  • Скопируйте этот скрипт в локальную папку (скажем, C:\Apps\FreeDPB)
  • Загрузите последнюю версию инструмента SysInternals Ручка (в настоящее время v4.21)
  • Скопируйте handle.exe в C:\Apps\FreeDPB
  • NB!Из командной строки запустите handle /? один раз.Это соглашение EULA.Сценарий не будет работать, если вы пропустите этот шаг!
  • Откройте Visual Studio, затем выберите Проект> Свойства> События сборки> Событие предварительной сборки
  • Установите Command Line на C:\Apps\FreeDPB\freepdb $(ProjectName)
  • Установите Description на Delete lock on PDB

... и теперь вам не нужно перезапускать Visual Studio для второй отладки!

Из комментариев этоработает с несколькими версиями Visual Studio на нескольких версиях Windows.

Обновление

Описано более радикальное решение здесь , которое включает замену ядра Visual Studio DLL (NatDbgDE.dll).Это решение работает только для Visual Studio 2003 SP1.

...