進階除錯工具
CPU 視窗(組合語言層級除錯)
View | Debug Windows | CPU
- 顯示:反組譯指令、CPU 旗標、暫存器內容、即時記憶體轉儲
- 適用:無原始碼程式庫、最佳化程式碼、嚴重記憶體損毀分析
- 需具備組合語言基礎
Call Stack(呼叫堆疊)
View | Debug Windows | Call Stack
- 顯示:函數呼叫鏈(誰呼叫誰),**非執行歷史記錄**
- 關鍵用法:例外發生時立即開啟,回溯找到真正錯誤源頭
- 配合單步執行觀察堆疊變化,快速理解呼叫關係
C++Builder 4/5/6 介面增強
- Watch、Local Variables、Call Stack 可**停駐在程式碼編輯器主視窗**
- C++Builder 5+:**除錯版面配置**— 獨立於設計版面,一鍵切換最佳除錯工作區
實戰除錯心法
耐心是核心武器
- 99% 的 Bug 靠「技術 + 耐心 + 火眼金睛」可解
- 遇到挫折:深呼吸、離開 5 分鐘、換個角度思考
- 常見突破:發現漏掉的步驟、錯誤的假設、邏輯倒置
系統性除錯流程
- 重現:建立最小重現步驟
- 定位:斷點 + 單步縮小範圍
- 觀察:Watch/Inspector 監控關鍵變數
- 假設:提出錯誤成因假設
- 驗證:Evaluate/Modify 修改值測試假設
- 修正:最小變更修復
- 回歸:確認修復未引入新問題
常見陷阱提醒
| 陷阱 | 徵兆 | 對策 |
| 最佳化干擾 | 變數值異常、單步跳躍 | 確認 Code optimization = None |
| 套件遮蔽 | 錯誤指向 VCL 內部 | 關閉 Build with runtime packages |
| 資源洩漏 | 多次 Program Reset 後 IDE 卡死 | 避免 Ctrl+F2,正常結束程式 |
| 巡視器失效 | 離開作用域變數消失 | 重新開啟或用 Watch 監控 |
除錯技巧補充包
資料觀察點
- Watch 視窗右鍵 Break When Changed
- 硬體支援時零效能負擔,精確捕捉「誰在何時改了這個變數」
條件式 Trace Into
例外處理除錯
- 專案選項啟用 Debug DCUs 可單步進入 VCL 例外處理碼
- Call Stack 觀察例外傳播路徑
多執行緒除錯
View | Debug Windows | Threads 切換執行緒語境
- 各執行緒獨立 Call Stack、Local Variables
- 凍結/解凍特定執行緒協助重現競態條件
結語
「好的除錯者不是找 Bug 最快的人,而是建立最有效重現與驗證流程的人。」
原著:Bill King | 翻譯:史平洋 (cker)
- 上一篇文章: 掌握 C++Builder 除錯藝術(二·上):專案設定、斷點技巧、變數檢視與單步執行
- 下一篇文章: 掌握 C++Builder 除錯藝術(一):乾淨程式碼、例外處理、記錄機制與全域例外攔截
Copyright ©
程式碼之家 All Rights Reserved