此为历史版本和 IPFS 入口查阅区,回到作品页
Leo
IPFS 指纹 这是什么

作品指纹

Visual Studio C# 除錯技巧:透過 CallerMemberName & CallerLineNumber 取得呼叫的方法與行號來快速除錯

Leo
·
·

Visual Studio C# 除錯技巧

  我們在開發的時候雖然可以透過斷點或 Visual Studio 會自動跳轉至 crash 的地方來得知 crash 的位置。可是有時候就算知道 crash 的方法是什麼,還是會不知道崩潰的原因。

  其中若是呼叫端的錯誤導致崩潰,而又有超多的地方在呼叫這個方法時,那就會很難找到特定導致崩潰的呼叫端;或者是已經 release 了,需要噴 LOG 出來避免在使用者端 crash 時不知道是哪一段呼叫這個方法導致崩潰的時候,以下介紹的方法就可以得知是誰呼叫了我的方法,以及呼叫的方法在哪一行!

  由於 Vsual Studio C# 可以在方法中預先指定好預設參數令呼叫端可以直接使用該方法。因此透過這種方式,就可以創造出如下的方法令使用者不需要傳遞任何參數就可以在該方法內得知使用者在哪個方法,哪一行內呼叫我的方法。

Visual Studio C# 除錯技巧 範例程式碼

class Program
{
    // 在 string call = null 前面加上 [CallerMemberName] 代表著要把 string 型別,參數名稱為 call 的參數改成呼叫端的方法名稱
    // 在 int line = 0 前面加上 [CallerLineNumber] 代表著要把 int 型別,參數名稱為 line 的參數改成呼叫端的行號
    private static void MyMethod([CallerMemberName] string call = null, [CallerLineNumber] int line = 0)
    {
        Console.WriteLine($"Call: {call}");
        Console.WriteLine($"Line: {line}");
    }

    private static void Main(string[] args)
    {
        MyMethod();
    }

    /// <output>
    /// Call: Main
    /// Line: 11
    /// </output>
}
CC BY-NC-ND 2.0 授权