Turbo C (TC/TC++/BC) 集成調試器為**源級調試器**,直接對應 C 源代碼行。核心流程:**設置斷點 → 運行到斷點 → 檢查/修改狀態 → 單步執行 → 重複**。
| 熱鍵 | 菜單路徑 | 功能詳解 |
| F5 | Window → Zoom | 切換活動窗口全屏/分屏模式 (編輯/監視/消息窗口) |
| Alt+F5 | Window → User Screen | 切換到用戶程序輸出屏 (運行時畫面),任意鍵返回 IDE |
| F6 | Window → Next | 在編輯窗口、監視窗口、消息窗口間循環切換焦點 |
| Alt+F6 | Window → Previous | 編輯窗口活動時:切換到上一個編輯文件;下方窗口活動時:監視↔消息窗口切換 |
| Ctrl+F9 | Run → Run | **核心命令**:編譯(必要)→鏈接→運行。若「源級調試」和「調試信息」為 On,則**在斷點或程序結束處暫停** |
| — | Project → Remove Messages | 清空消息窗口編譯/鏈接警告錯誤信息 |
| Ctrl+F4 | Debug → Evaluate/Modify | **計算表達式、修改變量值**。輸入 C 表達式 (可含函數調用),回車顯示結果,可編輯修改變量內存值 |
| — | Debug → Find Function | 查找函數定義,在編輯窗口顯示。**僅調試時有效** |
| Ctrl+F3 | Debug → Call Stack | **顯示調用棧**。列出當前函數調用鏈,選擇任意幀可跳轉查看該幀局部變量/參數/源代碼位置。**僅調試時有效** |
| — | Options → Debugger → Source Debugging | 控制調試模式:On (集成+獨立調試器均可)、Standalone (僅獨立調試器)、None (不生成調試信息 .exe 無調試符號) |
| Ctrl+F7 | Break/Watch → Add Watch | **添加監視表達式**。輸入 C 表達式 (變量、數組元素、結構體成員、指針解引用、函數調用),調試器在斷點/單步後自動求值顯示 |
| — | Break/Watch → Delete Watch | 刪除指定監視表達式 |
| — | Break/Watch → Edit Watch | 編輯現有監視表達式 |
| — | Break/Watch → Remove All Watches | 清空所有監視表達式 |
| Ctrl+F8 | Break/Watch → Toggle Breakpoint | **在光標行切換斷點** (設置/清除)。斷點行高亮顯示 |
| — | Break/Watch → Clear All Breakpoints | 刪除程序中所有斷點 |
| — | Break/Watch → Next Breakpoint | 跳轉到下一個斷點位置 (編輯窗口) |
| 現象 | 排查步驟 | 關鍵操作 |
| 程序崩潰 (除零/空指針/越界) | 1. 運行到崩潰 2. 打開調用棧 3. 定位崩潰源行 4. 監視相關變量 5. 分析如何得到非法值 | Ctrl+F9, Ctrl+F3, Ctrl+F7 |
| 邏輯錯誤 (結果不符預期) | 1. 關鍵算法前設置斷點 2. 單步執行 (F8) 3. 監視中間變量 4. 對比預期值 5. 定位首個偏差行 | Ctrl+F8, F8, Ctrl+F7 |
| 死循環/卡死 | 1. 強制中斷 (Ctrl+Break) 2. 查看調用棧/當前行 3. 監視循環條件變量 4. 分析為何不變化 | Ctrl+Break, Ctrl+F3, Ctrl+F7 |
| 內存破壞 (莫名其妙變量變化) | 1. 設置數據斷點 (現代) / TC: 在可疑修改點前後加斷點單步 2. 監視目標地址內容 3. 定位寫入源頭 | F7/F8, 監視內存 |
| 遞歸錯誤 (棧溢出/結果錯) | 1. 遞歸入口斷點 2. 監視參數/返回值/深度 3. 單步進入 (F7) 觀察基例/遞歸步 | Ctrl+F8, F7, Ctrl+F7 |
| 能力 | Turbo C | 現代調試器 |
| 逆向調試 (時間旅行) | 無 | rr (Record and Replay) + GDB:記錄執行軌跡,支持**反向單步/反向繼續/反向監視**,定位「變量何時被改壞」的終極武器 |
| 條件/日誌/命中計數斷點 | 無/需代碼修改 | 原生支持:break foo.c:10 if i==5, commands>silent>printf "i=%d\n",i>continue |
| 數據斷點 (硬件監視點) | 無 | watch *ptr, rwatch var, awatch var:內存讀/寫/讀寫觸發,定位內存破壞源頭零成本 |
| 多線程/協程調試 | 無 (DOS單任務) | 線程列表、線程專用斷點、併發可視化、協程棧 (libunwind/ASan) |
| 遠程/嵌入式/內核調試 | 無 | GDB Server / OpenOCD / JTAG / KGDB / WinDbg KD / VS 遠程調試 |
| Python/腳本化自動化 | 無 | GDB Python API / LLDB Python / VS Code Debug Adapter Protocol:自動化斷點、漸變、數據結構遍歷、可視化 |
| 核心轉儲分析 | 無 | gdb ./exe core:離線分析崩潰現場,生產環境必備 |
Turbo C 調試器以**源級單步、斷點、監視、調用棧**四大核心功能,為一代程序員打開了「程序運行時內部視角」的大門。今日雖已退出歷史舞台,但其確立的**調試思維模型**——**假設驗證、狀態觀測、控制流回溯、數據流追蹤**——永不過時。**遷移到現代調試器,不僅是工具升級,更是調試效率的數量級躍升**:逆向調試解決「偶發難復現」、數據斷點直擊「內存暗箭」、腳本化自動化處理「海量數據結構」。**掌握調試藝術,是從「寫代碼」到「工程交付」的關鍵跨越。**