當程序包含 scanf、scanf_s 等格式化輸入函數時,單步調試常遇到「程序卡住等待輸入」「無法進入庫函數內部」等問題。掌握正確的調試姿勢,能大幅提升定位 Bug 的效率。
| 操作目的 | Visual Studio (VS) | Dev-C++ / Code::Blocks (GDB) | Turbo C / 老版本 VC6 |
|---|---|---|---|
| 單步執行(不進函數) | F10 | F8 / F7 (視配置) | F10 |
| 單步進入(進函數內部) | F11 | F7 / Ctrl+F7 | F11 |
| 運行到斷點 | F5 | F5 / F9 | F5 (運行) |
| 查看變量值 | 監視窗口 / 數據提示 | 監視窗口 / 懸停提示 | 監視窗口 / Alt+F3 |
scanf 程序的調試步驟演示#include <stdio.h>
int main() {
int a, b, sum; // ← 在此行設置斷點 (F9)
printf("輸入兩個整數: ");
scanf("%d %d", &a, &b); // ← 單步到此行 (F10)
sum = a + b; // ← 輸入數據後單步執行
printf("和 = %d\n", sum);
return 0;
}
int a, b, sum; 處設置斷點(F9)。scanf 行,控制台顯示提示符。10 20),按 Enter 確認。a、b、sum 變量變化。%d %d 需空格分隔),避免殘留換行符導致後續 %c 讀取失敗。scanf 內部:通常無必要,庫函數無源碼;若需檢查返回值,單步過後查看 eax/rax 寄存器或賦值給變量再看。a > 100,僅當條件滿足時中斷。單步調試含 scanf 程序的核心是:斷點設置在輸入前 → 單步到輸入行 → 控制台手動輸入 → 繼續單步觀察變量。熟練掌握 IDE 的快捷鍵(F10/F11/F5/F9)與監視窗口,配合條件斷點、數據斷點,能讓調試事半功倍。