调试后(Windows 10,Visual Studio)PDB保持打开状态

时间:2019-02-12 11:04:09

标签: visual-studio debugging visual-studio-2003

我们以前的开发系统使用Windows XP和Windows7。从Visual Studio调试C ++ DLL效果很好。

最近迁移到Windows 10导致了一个令人讨厌的问题。我们可以调试一次(使用F5),但是第二次会导致链接器错误:

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

尝试在Visual Studio仍处于打开状态时在资源管理器中手动删除.pdb会导致错误:

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 :(得分:1)

经过几个小时的搜寻后,发现了一些相关问题,但unanswered却有问题。遵循this MSDN article中的建议以及我自己的一些调试,此解决方案有效:

  • 下载FreePDB,这是MSDN用户Toni76编写的脚本(感谢Toni!)
  • 将此脚本复制到本地文件夹(例如C:\Apps\FreeDPB
  • 下载SysInternals工具Handle的最新版本(当前为v4.21)
  • handle.exe复制到C:\Apps\FreeDPB
  • 注意!在命令行中,运行一次handle /?。这是同意EULA。如果您跳过此步骤,脚本将无法正常工作!
  • 打开Visual Studio,然后依次单击“项目”>“属性”>“构建事件”>“预构建事件”
  • Command Line设置为C:\Apps\FreeDPB\freepdb $(ProjectName)
  • Description设置为Delete lock on PDB

......现在您无需重新启动Visual Studio进行第二次调试!

从注释来看,这可以在Windows的多个版本上使用Visual Studio的多个版本。

更新

here描述了一种更彻底的解决方案,其中涉及替换核心的Visual Studio DLL(NatDbgDE.dll)。但是,该解决方案仅适用于Visual Studio 2003 SP1。

答案 1 :(得分:0)

在我的情况下,这是由于“ Process Explorer”程序引起的,该程序与Visual Studio一起打开(我用它来检查已创建的exe的某些属性)。关闭后,问题解决了。