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

掌握 C++Builder 除錯藝術 (二·上):IDE 設定、斷點策略與變數監視

     編輯:VC 教學

除錯前置準備:專案選項關鍵設定

正確的編譯器/連結器設定是除錯順利的前提。依序檢查 Project → Options:

Compiler 標籤

  • 點選 Full Debug 按鈕:自動啟用調試資訊、關閉優化、啟用行號資訊。
  • Code optimization = None:防止編譯器重排/內聯導致原始碼與機器碼對應失真。
  • Debug information = On、Line number information = On。
  • Disable inline expansions = On:避免內聯函式讓單步進入失效。

Pascal 標籤(含 VCL 專案必看)

  • Optimization = Off。
  • Debugging 區塊全勾選(行號、參數資訊等)。

Linker 標籤

  • Create debug information = On:產生 TD32/Map 檔,支援源級除錯。
  • Use dynamic RTL:視專案需求(動態連結較小、靜態連結獨立)。
  • Don't generate state files = Off:啟用狀態檔加速增量連結(會產生大型 .~df 檔)。

Directories/Conditionals 標籤

  • Search path 加入 $(BCB)\source\vcl 及第三方元件原始碼路徑,才能單步進入 VCL/元件內部。

Packages 標籤 —— 最關鍵

  • Build with runtime packages = Off(靜態連結)。
    原因:Runtime Package (BPL) 本身不含除錯資訊,啟用時除錯器會將錯誤歸咎於 VCL 內部,掩蓋真實應用層 Bug。除錯階段務必關閉,發布時再決定是否開啟。

Debugger Options 對話框

  • Tools → Debugger Options → Integrated debugging = On:啟用 IDE 內建除錯器。

設定完成後執行 Project → Build All 重新完整編譯,確保所有單元套用新設定。

斷點大師:從基礎到條件斷點

基本操作

  • 編輯器左側灰色邊欄點擊 → 紅點 = 斷點。
  • 藍點 = 可設斷點行(含可執行碼);紅叉 = 無效斷點(無碼行、註解、優化掉);綠勾 = 有效啟用。
  • 執行中可隨時新增/移除/啟用/停用,無需重新編譯。

條件斷點

右鍵斷點 → Breakpoint Properties:

  • Condition:C++ 布林運算式(如 i == 100 && obj->state == 3),變數必須在該作用域可見。執行至斷點時評估,真才停下。
  • Pass Count:略過前 N-1 次,第 N 次停下(如迴圈第 500 次)。
  • 兩者可組合:Pass Count = 10, Condition = x > 0 表示前 9 次忽略,第 10 次滿足條件才停。

異常即斷點

異常拋出時,除錯器自動在拋出行顯示為特殊斷點(紅底白字),可直接檢查堆疊與變數。

變數監視三大工具

工具開啟方式特色適用場景
Watch ListView → Debug Windows → Watch List / Ctrl+Alt+W手動輸入運算式,跨作用域、支援型別轉換、陣列切片追蹤特定變數/運算式跨函式變化
Inspector滑鼠停留變數 → 右鍵 Inspect / Ctrl+I樹狀展開物件/結構/陣列/指標,可遞迴展開深度檢查複雜物件結構
Evaluate/Modify編輯器右鍵 Evaluate/Modify / Ctrl+F7即時求值、修改變數、呼叫函式臨時驗證假設、側邊效應測試

Local Variables 視窗

View → Debug Windows → Local Variables 自動顯示當前幀所有區域變數(含 this、參數),單步時即時更新,無需手動加入。

下一篇預告

將深入單步執行技巧(F7/F8/Shift+F7/F4/Shift+F8 差異)、CPU 視窗反組譯除錯、Call Stack 呼叫鏈分析、除錯版面配置與實戰心法。

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