当dll被调用时,断点永远不会被击中

时间:2012-07-30 18:28:15

标签: c# c++ .net dll

我在c#.net项目中添加了一个托管的c ++ dll(使用“add resource”);它找到我试图实例化的类,没有编译器错误。但不知何故,我知道我实例化的字段是获取空引用异常。所以我在设置字段的方法的顶部放置一个断点......它永远不会被击中。如果我使用.dll中的类注释掉该行,它会触及断点。取消注释,尽管被调用,该方法永远不会执行。这里发生了什么?

dll是ManagedSpyLib,类是ControlProxy,如果有帮助的话。调用是在后台工作者的DoWork方法中进行的,这种方法绝对是异步启动的 - 整个线程是否可以在没有警报调试器的情况下静默崩溃?我该怎么调试呢?

ETA:我在输出窗口或模块窗口中找不到关于dll的任何内容。一些谷歌搜索发现了一个修复:将目标更改为.net 3.5框架。但是我对WTF的理解还没有比以前更接近 - 我的代码有效,但现在我不知道为什么,这更令人费解。有人可以解释这种现象吗?

1 个答案:

答案 0 :(得分:3)

调试未知错误/在断点处停止失败的一般步骤:

确保为所讨论的DLL加载了PDB(Debug-> Window-> Modules)。确保源与您使用的版本匹配。

在调试时检查“输出”窗口中是否有任何可疑痕迹(尤其是关于异常)。

考虑打破所有异常(Debug-> Exceptions - >“抛出时为CLR异常”)。可能需要禁用“我的代码”(工具 - >选项 - >调试 - >仅限我的代码)以打破所有例外。