繁体   English   中英

如果从Microsoft的代码中抛出异常,我如何找出最初导致异常的内容?

[英]How do I find out what originally caused an exception, if it gets thrown from Microsoft's code?

我在DockPanel不同窗格上有两个包含DataGridView的控件。 如果一个处于编辑模式并且我切换窗格,我会从DataGridViewEndEdit()方法中抛出NullReferenceException 堆栈跟踪不会比那更深,并且异常不包含任何其他信息。

我在反射器中看过那个方法,我看不到任何明显的null。 我怀疑这个问题实际上是在我的代码中,但异常是从Microsoft的代码中重新抛出,并且正在重置堆栈跟踪。 我怎样才能找出最初造成异常的原因?

如果您怀疑MS代码中存在错误,可以从符号服务器下载调试符号,加载它们并在调试时跟踪它? 像这样

请注意,符号受各种许可证之一的约束。 如果(例如)您处理“单声道”贡献等,这可能会影响您。

你有没有看过InnerException属性?

按照说明设置MS 符号服务器源服务器 1 将调试器设置为在抛出NullReferenceException时中断。 然后,您将获得调试的完整源代码,或至少完整的堆栈跟踪。

1注意,列出的QFE包含在SP1中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM