C#中除錯和錯誤的處理
阿新 • • 發佈:2019-02-08
正常模式下的除錯
1,在vs中使用Console.Write(或者WriteLine)方法向控制檯輸出變數的值,通過這種形式來觀察變數的值是否符合預期。
2,在Unity中可以使用Debug.Log(“”) Debug.LogError(“”) Debug.LogWarn(“”),想Unity的Console視窗輸出資訊,方便進行除錯錯誤。
中斷模式下的除錯
通過斷點的設定,暫停程式的執行。
斷點是什麼?即原始碼自動進入終端模式的一個標記。
如何插入斷點?
- 右鍵程式碼,選擇breakpoint,insert breakpoint。
- 游標移動到程式碼行,選單欄中選擇Debug,Toggle Breakpoint。
- 游標移動到程式碼行,按下F9設定斷點,再按下取消斷點。
- 在需要新增斷點的行首位置,單擊設定斷點,再次單擊取消斷點。
斷點處選擇的行是不執行的。斷點資訊在斷點視窗中可以檢視、定位、刪除斷點。
如何在中斷模式下檢視變數的值?
滑鼠直接移動到變數名上就可以檢視,或者在斷點視窗中可以看到變數的值。
區域性變數中顯示當前環境下所有區域性變數目前(斷點執行)的值。
監視可以監視特定變數的值。
假如在定義的函式中設定斷點,我們可以在呼叫堆疊中看到:
即呼叫堆疊顯示當前行是由哪個函式呼叫過來的。
而對於即時視窗,可以手動的輸入變數名稱來檢視目前環境下的變數。
第一個res查詢失敗,是因為查詢第一個時斷點設定在了Fun中,該環境下沒有res變數。
同時,在區域性變數或者即時視窗,都可以直接對當前的值進行修改、重新賦值。
逐語句與逐過程
逐語句
一條一條語句的去執行,在遇到函式等其他語句時,會調到函式中,接著逐語句的去執行,當函式執行完畢再跳回來,就是程式一卡一卡的去執行。逐過程
也是一條一條的去執行,但是是流水式的去執行,把函式當一條語句去執行,不會有跳轉這種行為。相當於從斷點一直刷到最後,沒有什麼邏輯在其中。