【问题标题】:Unreachable breakpoint at execut(able/ing) code可执行/in) 代码处无法到达断点
【发布时间】:2010-03-22 19:55:31
【问题描述】:

我有两个 DLL,一个是用原生 C++ 编写的,另一个是用 C++/CLI 编写的。前者被注入到一个进程中,并在稍后的时间点加载后者。在调试时,我注意到本机 DLL 的断点正常运行,而其他的断点却没有,即使它的代码正在执行。

断点显示此消息:此断点不会被命中。没有与此行关联的可执行代码。可能的原因包括:预处理器指令或编译器/链接器优化。

模块窗口告诉我插件的符号已加载。我正在运行它的调试版本。关于为什么会这样,也许是一个修复的任何想法?

【问题讨论】:

    标签: c++ debugging dll c++-cli breakpoints


    【解决方案1】:

    您遇到的原因是 PDB(“PDB 代表 Program Database,一种专有文件格式(由 Microsoft 开发),用于存储有关程序的调试信息)不是最新的。

    尝试清理解决方案(包含托管代码 DLL)并重新构建它。

    提示:如果您指的是 DLL,请尝试将最新的 pdb 放在它旁边。您可以从 bin 文件夹中获取 pdb。

    【讨论】:

    • 即使在清理和重建 DLL 后问题仍然存在。
    • 您确定最新的 pdb 与您引用的 dll 存在于同一路径中吗?
    • 是的,我是在编译后手动从build目录复制过来的。
    • 你有没有尝试添加一个'Debugger.Break();'在您的 dll 中显式地运行您的代码,看看此时是否会提示您附加调试器?
    • 在之前的会话中尝试过,但确实得到了提示。回想起来,我认为这可能是由于我已经在调试它。我会再试一次,看看它是否有效。编辑:确实如此。谢谢你。
    【解决方案2】:

    我假设您使用的是 Visual Studio。是否开启了混合模式调试?

    (项目属性->调试->调试器类型)

    【讨论】:

    • 我将属性设置为自动。将其更改为混合,或仅针对此问题进行管理,并没有产生任何结果。
    猜你喜欢
    • 2012-08-10
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-31
    • 1970-01-01
    • 2017-12-05
    • 1970-01-01
    相关资源
    最近更新 更多