0

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

我在网上找到的解决方案都没有解决这个问题。该 dll 未显示在“调试->Windows->模块”菜单选择中可用的模块列表中......即使它实际上已加载。包装类中设置的断点可以正常工作。

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

4

3 回答 3

7

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

于 2012-09-18T02:59:49.863 回答
-1

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

于 2012-09-17T19:18:33.647 回答
-2

有点不清楚你的错误是什么,但如果你收到“断点当前不会被命中”的消息,这意味着它所说的 - 你没有达到你设置的断点。试着回顾一下你的程序,看看断点在哪里(它们应该是边缘的红点),然后看看你是否真的找到了它们

于 2012-09-17T19:11:11.850 回答