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

掌握 C++Builder 除錯藝術(二·上):專案設定、斷點技巧、變數檢視與單步執行

     編輯:關於C++

除錯前置準備:專案選項完整設定

Compiler(編譯器)分頁

  • 點選 Full debug(完全除錯模式)— 自動啟用多數所需設定
  • Code optimization = None:防止編譯器優化改變程式碼結構,確保原始碼與機器碼一一對應
  • Debug information = On、Line number information = On:產生行號對應資訊
  • Disable inline expansions = On:關閉內聯展開,避免單步進入內聯函數造成困擾

Linker(連結器)分頁

  • Create debug information = On:產生連結器層級除錯資訊
  • Use dynamic RTL:動態 RTL 有爭議,除錯建議關閉(靜態連結)
  • Don't generate state files = Off:啟用狀態檔加速增量連結(會產生大暫存檔)

Directories/Conditionals 分頁

  • Debug source path = $(BCB)\source\vcl:可單步進入 VCL 原始碼
  • 第三方元件路徑同步加入(分號分隔)

Packages(套件)分頁 — 關鍵設定

  • Build with runtime packages = Off(除錯時必須關閉)
  • 原因:執行套件不含除錯資訊,會導致除錯器將錯誤誤判為 VCL 內部問題
  • 發布正式版時再決定是否啟用

Debugger Options 對話框

  • Integrated debugging = On:啟用整合式除錯器

重新完整建置

修改設定後執行 Project | Build All 確保所有單元依新設定編譯。

斷點完整操作指南

基本斷點

  • 程式碼編輯器左側灰槽點擊 → 紅點出現,該行變紅
  • 程式執行至此暫停,控制權回傳除錯器

條件斷點

  • 紅點右鍵 → Breakpoint Properties
  • Condition:輸入運算式(如 x > 10 && y == 0),變數必須在當前作用域可見
  • Pass Count:略過 N-1 次,第 N 次命中才中斷
  • 兩者可組合使用

例外中斷

  • 例外發生時自動在拋出行顯示斷點
  • 後續可用 Call Stack 回溯尋找真正原因

斷點狀態圖示

變數檢視三大工具

1. Local Variables(區域變數視窗)

  • View | Debug Windows | Local Variables 或 Ctrl+Alt+L
  • 自動顯示當前函數所有區域變數,單步時動態更新

2. Watches(觀察視窗)

  • View | Debug Windows | Watches 或 Ctrl+Alt+W
  • 加入方式:程式碼選取變數/運算式 → 右鍵 Debug | Add Watch at Cursor 或 Ctrl+F5
  • 支援運算式求值:(i*j)+5、SomeVector[i].Name
  • 進階欄位:
    • Repeat count:陣列展開(如 arr + count=50 → 顯示 arr[0]..arr[49])
    • Digits:浮點數小數位數
    • 顯示格式:十六進位、二進位等強制轉換
  • 右鍵 Break When Changed:資料變更中斷(資料觀察點)

3. Inspectors(巡視器/偵測器)

  • Local Variables 視窗雙擊變數,或程式碼右鍵 Inspect
  • 顯示完整物件結構:Data(資料)、Methods(方法)、Properties(屬性)
  • 即時修改值:雙擊數值欄位直接編輯(謹慎使用)
  • 屬性欄位顯示 {read=, write=} 時,點擊 ? 按鈕可強制讀取
  • 巢狀巡視:雙擊成員開啟子巡視器
  • Descend(繼承):右鍵切換至基類/衍生類視圖,下拉清單快速切換
  • ⚠ 離開作用域會失效,需重新開啟

Evaluate/Modify(運算式求值/修改)

  • 程式碼右鍵 Debug | Evaluate/Modify
  • 最適合**臨時修改變數值**測試不同分支
  • 功能與 Watch/Inspector 重疊,但修改介面最直觀

單步執行五大模式

圖示含義
紅點啟用、有效斷點
紅點 + 黃叉無效斷點(該行無機器碼,如註解、宣告)
紅點 + 綠勾已驗證有效(執行時動態更新)
指令熱鍵行為適用場景
Step OverF8執行當前行,函數呼叫視為單步(不進入)確信被呼叫函數無誤
Trace IntoF7進入函數內部(含隱含屬性存取)需檢視函數內部邏輯
Trace to Next Source LineShift+F7執行至下一行有原始碼行API 回呼函數中斷
Run to CursorF4執行至游標所在行快速跳過大段程式碼
Run Until ReturnShift+F8執行至當前函數返回跳出深層巢狀/迴圈

額外控制

  • Program Reset (Ctrl+F2):強制終止,**慎用**— 資源不釋放,資料庫連線會耗盡
  • Run (F9):全速執行至下一斷點或例外

單步執行註記

  • 所有單步模式**均會檢查斷點條件**,滿足則中斷
  • 例外發生**立即中斷**,不受單步模式影響
  • 變數視窗**動態更新**,單步時自動重新求值
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved