【问题标题】:How to force Visual Studio 2015 to unlock .PDB file after FreeLibrary call?如何在 FreeLibrary 调用后强制 Visual Studio 2015 解锁 .PDB 文件?
【发布时间】:2016-07-18 10:49:12
【问题描述】:

使用LoadLibrary("file.dll") 加载DLL 库后,Visual Studio 也会打开并锁定file.pdb

问题是 - 即使在调用 FreeLibrary(...) 之后,file.pdb 仍保持锁定状态。

需要重新编译file.dll并再次重新加载(在MSVS外部,使用CL.exe),但编译失败,因为file.pdb仍然被锁定。 p>

如何让Visual Studio 2015 释放文件锁?

【问题讨论】:

    标签: c++ dll visual-studio-2015 pdb-files hotswap


    【解决方案1】:

    巧合的是,我偶然发现了一个解决方案:

    转到Tools -> Options,然后转到Debugging -> General,然后打开Use Native Compatibility Mode

    这解决了问题(例如,现在卸载 .dll 后 .pdb 文件被解锁)。

    我不知道为什么,因为我找不到Use Native Compatibility Mode 的文档。

    【讨论】:

    • 这是一个 VS2015 设置,它强制调试器使用旧的调试引擎。 VS2013中使用的那个。明智地设置新引擎是相当错误的。有人应该在 connect.microsoft.com 上提交有关此问题的错误,我会自愿为您服务。
    • @HansPassant 针对 MSVS 2013 提交了一个类似的错误,并在“不会修复”connect.microsoft.com/VisualStudio/feedback/details/1026184/… 中标记为已关闭。所以我什至没有打扰。 Andrew Hall @ MSFT 也有一个有趣的评论:“不幸的是,Visual Studio 调试器从不支持在从进程中卸载二进制文件时卸载 pdb,它总是要求停止调试。”也许它已经改变了?跨度>
    • 在 VS 2019 中只有 使用托管兼容模式
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-25
    • 2020-12-26
    • 1970-01-01
    • 2023-03-04
    • 2015-11-15
    • 2013-01-13
    相关资源
    最近更新 更多