visual-studio - 调试后 PDB 保持打开状态(Windows 10、Visual Studio)

标签 visual-studio debugging visual-studio-2003

我们以前的开发系统使用 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

最佳答案

经过几个小时的搜寻,发现了一些相关的内容,但是unanswered ,发现问题。遵循 this MSDN article 中的建议,加上我自己的一些调试,这个解决方案有效:

  • 下载 FreePDB ,MSDN 用户 Toni76 编写的脚本(谢谢托尼!)
  • 将此脚本复制到本地文件夹(例如 C:\Apps\FreeDPB)
  • 下载最新版本的 SysInternals 工具 Handle (当前为 v4.21)
  • handle.exe复制到C:\Apps\FreeDPB
  • 注意!从命令行运行 handle/? 一次。这是同意 EULA。如果跳过此步骤,脚本将无法运行!
  • 打开 Visual Studio,然后选择“项目”>“属性”>“构建事件”>“预构建事件”
  • 命令行设置为C:\Apps\FreeDPB\freepdb $(ProjectName)
  • 描述设置为删除 PDB 上的锁定

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

根据评论,这适用于多个版本的 Windows 上的多个版本的 Visual Studio。

更新

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

关于visual-studio - 调试后 PDB 保持打开状态(Windows 10、Visual Studio),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54648650/

相关文章:

linux - nodejs 在不同的端口上启动调试器

将值与 void* 进行比较

windows - 在 Windows 7 64 位上安装 Visual Studio 2003

c++ - 如何在 visual studio 2003 上指定/EHa

visual-studio - 调试时如何在 Visual Studio 中查看有关 HWND 的信息?

C++ 模板函数在 Visual Studio 中不起作用

.net - 在添加引用时调用 COM 组件返回了错误 HRESULT E_FAIL

Eclipse 调试显示变量内容

asp.net - Visual Studio 2003 - 打开 ASP.NET 项目 - 收到 "The operation timed out"错误消息

c++ - 从控制台应用程序到 .NET Windows 窗体