簡體   English   中英

如果該方法是運算符,如何找到調用ac#類方法的代碼?

[英]How to do I find the code calling a c# class method if the method is an operator?

我是C#和Visual Studio的新手,所以我不知道一個人可以用來調試的許多技術。

代碼正在觸發此方法的異常:

public static implicit operator T(RangeNode<T> node)
{
    return node.Value;
}

“ return node.Value;” NullReferenceException突出顯示該區域,我可以看到傳入的“節點”為null。

為了修復它,我需要找到調用代碼,並查看為什么傳入null。

通常,在Visual Studio中,我可以通過單擊函數簽名上方的“ X引用”幫助程序來找到它,以查看調用它的方法,但是此操作符方法中沒有出現它。 有什么想法可以找到調用代碼嗎?

執行程序時,在public static implicit operator T(RangeNode<T> node)放置一個斷點,並確保您具有Visual Studio的“ 調用堆棧”窗口:

視覺工作室

並向下看以查看此窗口:

呼叫堆棧窗口

現在,您可以單擊調用堆棧中的任何方法調用,查看誰調用了此方法以及傳遞給它的參數。

當您在調試模式下運行Visual Studio時,當您遇到類似的異常時,代碼實際上將暫停執行。 發生這種情況時,您需要查看調用堆棧-從入口函數(通常為Main )一直嵌套到操作員所在的位置,這是嵌套在其中的每個函數。 在這里時,您可以遍歷調用堆棧。

要確保它是打開的,請轉到DEBUG> Windows> Call Stack。 它將突出顯示或打開它,通常在屏幕底部。 發生異常時當前使用的功能將位於堆棧的頂部,並且在其旁邊應有一個箭頭。 其正下方的函數是使用該運算符的函數。 如果單擊它,它將帶您到使用該運算符的確切行。

使用調用堆棧進行調試是一個非常有用的工具!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM