首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> VC 教學

掌握 C++Builder 除錯藝術 (二·下):單步執行技巧與進階除錯視窗

     編輯:VC 教學

Evaluate/Modify:隨時求值與修改變數

在編輯器右鍵選擇 Debug → Evaluate/Modify,或快捷鍵 Ctrl+F7 開啟。支援:

  • 任意運算式求值(函式呼叫、成員存取、型別轉換)。
  • 修改變數值(雙擊 Value 欄位直接編輯)。
  • 側邊效應測試:如呼叫 obj->Refresh() 觀察介面變化。

比 Watch/Inspector 更適合「一次性驗證」與「即時修改」。

單步執行類型完全解析

命令快捷鍵行為適用場景
Step OverF8執行當前行,若為函式呼叫則「跨過」內部,停在下一行確信被呼叫函式正確,專注當前流程
Trace IntoF7進入函式內部第一行(含隱性呼叫如屬性 setter)需檢查函式內部邏輯、參數傳遞
Trace to Next Source LineShift+F7執行至下一行有原始碼資訊的行(跨越無原始碼的 DLL/API)系統 API 回呼、無原始碼庫的中間層
Run to CursorF4直接執行至游標所在行,不設永久斷點快速跳過大段已驗證代碼
Run Until ReturnShift+F8執行至當前函式返回處快速跳出深層巢狀迴圈/遞迴
Program ResetCtrl+F2強制終止除錯進程,**資源不會釋放**程式卡死、死循環、嚴重死結時最後手段
RunF9全速執行至下一斷點或異常常態執行

單步執行重要註記

  • 所有單步命令執行前會評估條件斷點,滿足則停下。
  • 若觸發異常,除錯器會在拋出點停下(若設定 Stop on exceptions)。
  • 變數視窗(Watch/Local/Inspector)會**動態更新**,單步時自動重新求值。

進階除錯視窗

CPU 視窗

View → Debug Windows → CPU 開啟。顯示:

  • 反組譯碼(含原始碼對應行號)。
  • 暫存器狀態(EAX, EBX, ECX...、EFLAGS)。
  • 記憶體視圖(原始位元組、字串、浮點數)。
  • 呼叫堆疊(彙編層級)。

適用:最佳化後代碼除錯、介面呼叫約定驗證、緩衝區溢位分析、逆向工程。

Call Stack 視窗

View → Debug Windows → Call Stack。顯示函式呼叫鏈(最上層為當前位置)。

  • 雙擊幀可跳轉至對應原始碼/反組譯。
  • 右鍵可切換顯示參數值、區域變數。
  • 單步執行時觀察堆疊變化,理解呼叫關係。

C++Builder 4/5/6 介面增強

  • Watch、Local Variables、Call Stack 可停駐在編輯器主視窗,拖曳分頁即可。
  • C++Builder 5 引入 Debug Layout:自動切換佈局(設計時/除錯時不同視窗排列)。

除錯心法

  1. 耐心:Bug 不會憑空消失,需一步步縮小範圍。
  2. 假設-驗證:對錯誤原因提出假設,設計實驗(斷點/Watch/單步)驗證。
  3. 適時休息:卡住 30 分鐘離開 5 分鐘,常能帶來新視角。
  4. 記錄過程:嘗試過的方法、觀察到的現象、最終根因,建立個人知識庫。

系列總結

兩篇文章涵蓋:代碼規範 → 異常/日誌 → IDE 設定 → 斷點 → 變數監視 → 單步執行 → 進階視窗。掌握這套工具鏈,99% 的 Bug 可在有限時間內定位修復。祝除錯順手,代碼無 Bug!

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved