【问题标题】:PDB remains open after debugging (Windows 10, Visual Studio)调试后 PDB 保持打开状态(Windows 10、Visual Studio)
【发布时间】:2019-07-06 00:22:03
【问题描述】:

我们之前的开发系统使用的是 Windows XP 和 Windows 7。从 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 专业版 v1803

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      在搜索了几个小时后,一些相关的,但unanswered,找到了问题。按照this MSDN article 中的建议以及我自己的一些调试,此解决方案有效:

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

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

      来自 cmets,这适用于多个版本的 Windows 上的多个版本的 Visual Studio。

      更新

      here 描述了一个更激进的解决方案,其中涉及替换核心 Visual Studio DLL (NatDbgDE.dll)。不过,此解决方案仅适用于 Visual Studio 2003 SP1。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多