在 VS2010 中调试混合模式应用程序时,在非托管 c++ dll 源文件(从托管 c# 包装类调用)中包含的一行代码上设置的断点显示臭名昭著的“当前不会命中断点。否将鼠标悬停在相关行的断点上时,已为该文档加载符号”信息消息。断点本身是一个带有黄色信息三角形的红色圆圈,而不是通常的实心红色球体。当然,执行调试器时不会命中断点。我为这个警告找到的大多数答案表明断点没有正确设置,或者没有加载预期的 dll,或者相关的 pdb 文件没有位于正确的位置,等等。这不是问题。应用程序确实加载并正确执行引用的 dll。我已验证正确的 pdb 文件(与其 dll 具有相同的文件日期)与目标 dll 本身位于可执行文件的工作目录中。调试器根本不加载 dll 的符号,并且 dll 不显示在模块列表中。
我在网上找到的所有解决方案都无法解决此问题。该 dll 未显示在“调试->Windows->模块”菜单选择中可用的模块列表中......即使它实际上已加载。包装类中设置的断点可以正常工作。
删除 bin 和 obj 目录,清理和重建解决方案也无济于事。
最佳答案
此问题的解决方案是设置位于应用程序属性页面的“调试”选项卡中的“启用非托管代码调试”标志
关于c# - 调试混合模式应用程序(c# 和非托管 c++)时出现 "The breakpoint will not currently be hit"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12465468/