編輯器也是除錯利器#
Debugger 常被視為除錯主角,但你的程式碼編輯器(或 IDE)同樣是定位 bug 的強力工具。請選用功能完整的編輯器,如 Emacs、vim 或強大的 IDE,而非系統內建的陽春編輯器(Notepad、TextEdit、Nano 等)。
搜尋與定位問題#
用詞幹搜尋#
搜尋時使用詞幹 (stem) 而非完整單字,可以擴大搜尋範圍。例如搜尋 order 而非 ordering,這樣能同時找到 order、orders、ordering。
用正規表達式搜尋#
當問題涉及多個相似的變數或欄位時,正規表達式很有用:
# 搜尋座標欄位 x1, x2, y1, y2 的所有出現處
[xy][12]找出拼寫錯誤#
編輯器搜尋特別適合定位 typo。當你從錯誤訊息或定義中複製 identifier 來搜尋,只會找到拼對的那些,拼錯的則不會出現。
var failureMessage = "Failure!",
failureOccurrances = 5;
// More code here
if (failureOccurrences > 0) alert(failureMessage);上例中
failureOccurrances(多了一個a)和failureOccurrences拼法不同,搜尋其中一個只會找到該變體,從而暴露 typo。在 vim 中可用*鍵搜尋游標下的單字。
差異比較 (Differential Debugging)#
當兩段理論上相同的程式碼行為不同時:
- 並排比較:將兩段程式碼複製到上下相鄰處,逐字比對
- 分割視窗:將編輯器視窗分為左右兩半,並排檢視
- 替換干擾文字:用正規表達式將不重要的差異(如 IP 位址、時間戳記)替換為統一的 placeholder
" 將 Chrome 版本號簡化為只保留主版本
:%s/\(Chrome\/[^.]*\)[^ ]*/\1整理 Log 檔#
面對大量 log 資料時,編輯器可以幫助你:
- 刪除無關行:在 vi 中用
:g/poll/d刪除所有含poll的行;在 Emacs 中用M-x delete-matching-lines - 加上註解:在你理解的段落旁加上文字標記(如
start of transaction、transaction failed) - 摺疊程式碼:利用 outlining 功能摺疊/展開區塊,快速導覽
- 分割視窗:同時檢視 log 檔的不同部分
可以多次執行刪除命令(搭配 undo),逐步過濾到只剩下真正相關的記錄。
重點回顧#
- 利用編輯器的搜尋功能定位拼寫錯誤的 identifier
- 編輯文字檔案使差異更明顯,方便進行差異比較
- 透過刪除、註解、摺疊等手法整理 log 檔,提高可讀性