編輯器也是除錯利器#

Debugger 常被視為除錯主角,但你的程式碼編輯器(或 IDE)同樣是定位 bug 的強力工具。請選用功能完整的編輯器,如 Emacs、vim 或強大的 IDE,而非系統內建的陽春編輯器(Notepad、TextEdit、Nano 等)。

搜尋與定位問題#

用詞幹搜尋#

搜尋時使用詞幹 (stem) 而非完整單字,可以擴大搜尋範圍。例如搜尋 order 而非 ordering,這樣能同時找到 orderordersordering

用正規表達式搜尋#

當問題涉及多個相似的變數或欄位時,正規表達式很有用:

# 搜尋座標欄位 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)#

當兩段理論上相同的程式碼行為不同時:

  1. 並排比較:將兩段程式碼複製到上下相鄰處,逐字比對
  2. 分割視窗:將編輯器視窗分為左右兩半,並排檢視
  3. 替換干擾文字:用正規表達式將不重要的差異(如 IP 位址、時間戳記)替換為統一的 placeholder
" 將 Chrome 版本號簡化為只保留主版本
:%s/\(Chrome\/[^.]*\)[^ ]*/\1

整理 Log 檔#

面對大量 log 資料時,編輯器可以幫助你:

  • 刪除無關行:在 vi 中用 :g/poll/d 刪除所有含 poll 的行;在 Emacs 中用 M-x delete-matching-lines
  • 加上註解:在你理解的段落旁加上文字標記(如 start of transactiontransaction failed
  • 摺疊程式碼:利用 outlining 功能摺疊/展開區塊,快速導覽
  • 分割視窗:同時檢視 log 檔的不同部分

可以多次執行刪除命令(搭配 undo),逐步過濾到只剩下真正相關的記錄。

重點回顧#

  • 利用編輯器的搜尋功能定位拼寫錯誤的 identifier
  • 編輯文字檔案使差異更明顯,方便進行差異比較
  • 透過刪除、註解、摺疊等手法整理 log 檔,提高可讀性