我是c#和visual studio的新手,所以我不知道用于调试的许多技术。
代码触发了此方法的异常:
public static implicit operator T(RangeNode<T> node)
{
return node.Value;
}
“return node.Value;”区域用NullReferenceException突出显示,我可以看到传入的'node'是null。
为了解决这个问题,我需要找到调用代码,看看为什么它传入null。
通常在Visual Studio中,我可以通过单击函数签名上方的“X references”帮助程序来查找它,看看是什么调用它,但是这个运算符方法没有出现。我有什么想法可以找到调用代码吗?
答案 0 :(得分:2)
执行程序时,在public static implicit operator T(RangeNode<T> node)
内放置一个断点,并确保您拥有Visual Studio的调用堆栈窗口:
俯视这个窗口:
现在,您可以单击调用堆栈中的任何方法调用,查看调用此方法的人员以及传递给它的参数。
答案 1 :(得分:2)
当您在调试模式下运行Visual Studio时,当您遇到类似的异常时,代码将基本上暂停执行。当发生这种情况时,您希望查看调用堆栈 - 这是您嵌入的每个函数,从入口函数(通常为Main
)一直到您在运算符中的位置。当你在这里时,你可以遍历调用堆栈。
要确保此功能已打开,请转到DEBUG&gt; Windows&gt;调用堆栈。它会突出显示或打开它,通常在屏幕的底部。当您突破异常时,您当前所处的功能将位于堆栈的顶部,并且旁边应该有一个箭头。它下面的函数是使用此运算符的函数。如果单击它,它将带您到使用运算符的确切行。
使用调用堆栈调试是一个非常有用的工具!