哪个对象导致NullReferenceException

时间:2012-01-03 16:39:03

标签: .net-2.0 windbg sos

Dumpfile报告NullReferenceException。我可以看到stacktrace作为哪个方法抛出此异常。这个方法本身很长并且很多东西,有什么方法我可以确定哪个对象实际上是null?

2 个答案:

答案 0 :(得分:3)

NullReferenceException表示对象的缺少 - 没有空对象。我假设你的意思是哪个变量是null,或者更确切地说哪个表达式被评估为null。不,没有任何迹象表明这一点。

如果您正在使用调试版本,则应该在堆栈跟踪中获取行号,这可以帮助您将其固定到单个语句中。如果你正在使用发布版本,你可能没有行号 - 这是保持你的方法简短和甜蜜的众多原因之一。

或者,如果您正在使用windbg并且可以在发生异常时使其中断,那么这应该给您一个很好的指示,当然......

答案 1 :(得分:3)

!sosex.mk会在失败时给你IL偏移量。您可以将这些信息与一个或多个反汇编方法结合使用,以查看发生了什么。 !sos.U,!sos.dumpil或!sosex.muf将为您反汇编该方法,并允许您检查失败位置的代码。为了在优化代码中查找相关字段,本地或参数,您需要使用!sos.dso或!sosex.mdso来转储堆栈和寄存器中的对象,然后进行一些调查工作。 !sosex.mdso允许您按出现次数或多种过滤机制限制输出。