C# 查看哪个对象引用导致NullReferenceException

C# 查看哪个对象引用导致NullReferenceException,c#,.net,visual-studio,debugging,exception,C#,.net,Visual Studio,Debugging,Exception,使用Visual Studio调试C#时,是否可以看到给定代码行上的哪个对象引用导致了NullReferenceException 我有一种奇怪的情况,有时,当从VisualStudio运行应用程序的调试构建时,我会在某一行得到一个NullReferenceException VisualStudio将弹出指向该行的异常助手框,但该行上使用的3个对象引用在该点处均不为空 电话是: myClassInstance.myMethod(myOtherClassInstance.IPAddressIn

使用Visual Studio调试C#时,是否可以看到给定代码行上的哪个对象引用导致了NullReferenceException

我有一种奇怪的情况,有时,当从VisualStudio运行应用程序的调试构建时,我会在某一行得到一个NullReferenceException

VisualStudio将弹出指向该行的异常助手框,但该行上使用的3个对象引用在该点处均不为空


电话是:

myClassInstance.myMethod(myOtherClassInstance.IPAddressInstance.ToString());

我的两个类实例都是非空的,IPAddress实例也是非空的(它有其预期的值)。

如果调用的代码标记为
[DebuggerNonUserCode]
属性,则问题可能出在框架代码中,而不是该行


在任何情况下,您是否有可以发布的特定示例?

请小心返回空对象的函数。这让我明白了一次,但在调试器中不是很清楚。看看这个:

public class FooBar
{
    public int ReturnInt() { return 0; }
}

public FooBar ReturnNullObject()
{
    return null;
}

// Execution code:
int exceptionalInt = ReturnNullObject().ReturnInt();
编辑:根据您的编辑,确保IPAddressInstance未返回null

编辑:您可能希望将单行拆分为几行。这应该会有所帮助

var ip = myOtherClassInstance.IPAddressInstance;
var ipString = ip.ToString();
myClassInstance.myMethod(ipString);

在该行设置一个断点,直到得到NRE

没有魔法,对吧?有些代码试图取消对
null
的引用


即使您像Visual Studio所说的那样执行smth,比如
A.Property.Property2.ToString()
,但问题出在
ToString()
方法中,该方法位于程序集中,Visual Studio不会在调试中输入该方法。

听起来符号和代码之间可能不匹配。重新生成调试配置。@John可能不会,VS.NET会立即警告您源与加载的模块不同。如果没有调试符号,则不会有太多。从上面的“[…]运行调试生成时[…]”用行更新了问题。