【问题标题】:How do I find out what originally caused an exception, if it gets thrown from Microsoft's code?如果异常是从 Microsoft 的代码中抛出的,我如何找出最初导致异常的原因?
【发布时间】:2009-03-26 11:42:39
【问题描述】:

我在DockPanel 的不同窗格中有两个包含DataGridViews 的控件。如果一个处于编辑模式并且我切换窗格,我会从DataGridViewEndEdit() 方法中得到一个NullReferenceException。堆栈跟踪不会比这更深,并且异常不包含更多信息。

我在反射器中查看了该方法,但看不到任何明显为空的内容。我怀疑问题实际上出在我的代码中,但异常是从 Microsoft 的代码中重新抛出的,并且正在重置堆栈跟踪。如何找出最初导致异常的原因?

【问题讨论】:

    标签: c# .net exception datagridview dockpanel


    【解决方案1】:

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

    请注意,这些符号受各种许可之一的约束。如果(例如)您从事“单一”贡献等工作,这可能会影响您。

    【讨论】:

      【解决方案2】:

      您是否查看过 InnerException 属性?

      【讨论】:

        【解决方案3】:

        按照说明设置 MS symbol serversource server1。将调试器设置为在抛出 NullReferenceException 时中断。然后,您将获得用于调试的完整源代码,或者至少获得完整的堆栈跟踪。

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-11-06
          • 2017-08-09
          • 1970-01-01
          • 1970-01-01
          • 2013-08-08
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多