我已经为我的c#.net项目(使用“添加资源”)添加了托管C++ dll;它发现我试图实例化的类很好,没有编译器错误。但不知何故,我知道我实例化的字段获取空引用异常。所以我在设置字段的方法的顶部放置了一个断点......并且它从未被击中。如果我使用.dll中的类注释掉该行,则会触发该断点。取消注释,该方法即使被调用也不会执行。这里发生了什么事?当dll被调用时断点从来没有命中
该DLL是ManagedSpyLib,该类是ControlProxy,如果有帮助的话。这个调用是在一个背景工作者的DoWork方法中,这个方法肯定是异步开始的 - 整个线程是否会在没有提示调试器的情况下静静地崩溃?我怎样才能调试呢?
ETA:我在输出窗口或模块窗口中找不到有关dll的任何信息。一些谷歌搜索找到了一个修复:将目标更改为.net 3.5框架。但是我并没有接近理解WTF比以前更进一步 - 我的代码有效,但现在我不知道为什么,这更令人困惑。有人可以解释这种现象吗?
调试行为与异常一致。是的,BGW的DoWork()方法中的例外被吞噬。不要忘记在RunWorkerCompleted事件处理程序中测试e.Error。或者使用Debug + Exception,Thrown复选框让调试器停止。 – 2012-07-30 19:01:32
@HansPassant什么例外? – Yamikuronue 2012-07-30 19:31:22
我不知道,你会从调试器告诉你的东西中得到更好的了解。否则您会抱怨NullReferenceExceptions。 – 2012-07-30 19:42:46