调试混合模式应用程序(C# 和非托管 C++)时"The breakpoint will not currently be hit"错误

"The breakpoint will not currently be hit" error while debugging a mixed mode application (c# and unmanaged c++)

本文关键字:breakpoint The will not 错误 hit be currently C++ 应用程序 模式      更新时间:2023-10-16

在VS2010中调试混合模式应用程序时,在非托管c++dll源文件(从托管c#包装类调用)中包含的一行代码上设置的断点显示了臭名昭著的"当前不会命中断点。没有为此文档加载任何符号"信息消息,此时将鼠标悬停在有问题的行上的断点上。断点本身是一个带有黄色信息三角形的红色圆圈,而不是通常的实心红色球体。当然,在执行调试器时不会碰到断点。我发现的关于此警告的大多数答案都表明断点没有正确设置,或者没有加载预期的dll,或者相关的pdb文件没有位于正确的位置,等等。这不是问题所在。应用程序确实正确加载并执行了引用的dll。我已经验证了正确的pdb文件,其文件日期与其dll相同,与目标dll本身一起位于可执行文件的工作目录中。调试器只是不加载dll的符号,dll也不会显示在模块列表中。

我在网上找到的任何解决方案都无法解决这个问题。dll未显示在"调试->Windows->模块"菜单选择中可用的模块列表中。。。尽管事实上它是有负载的。包装类中设置的断点工作正常。

删除bin和obj目录、清理和重建解决方案也无济于事。

此问题的解决方案是设置位于应用程序属性页的"调试"选项卡中的"启用非托管代码调试"标志

您没有命中代码,也没有在模块列表中显示dll,因为程序没有加载它。因此,无论你的C#包装器在调用什么,都不是这样——或者可能调用不正确。

您的错误是什么还不清楚,但如果您收到的消息是"当前不会命中断点",那么它的意思就是它所说的——您没有命中您设置的断点。试着回顾你的程序,看看断点在哪里(它们应该是页边空白处的红点),然后看看你是否真的找到了它们

相关文章: