初學者常用 ShowMessage("xxx") 觀察程式流程,但在 BCB 事件驅動、元件眾多的環境下,程式流程跳躍複雜,如同組合語言的旗標暫存器,難以靠列印掌握。BCB 整合調試器功能強大,掌握 F7 F8 F5 Ctrl+F5 組合鍵即可應對大多數場景。
| 按鍵 | 功能 | 口訣 |
|---|---|---|
| F7 | 逐步進入 | 進函數內部 |
| F8 | 逐步執行 | 不進函數,單行執行 |
| F5 | 斷點切換 | 紅點標記,程式暫停 |
| Ctrl+F5 | 執行到游標處 | 快速跳過無關代碼 |
| F9 | 執行/繼續 | 全速運行至下一斷點 |
// 調試指標指向 WinMain,尚未執行
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) {
try {
Application->Initialize(); // 第3次 F8
Application->CreateForm(...); // 第4次 F8 → 按 F7 進入
Application->Run(); // 第9次 F8 → 進入訊息迴圈,視窗顯示
} catch (...) { ... }
}
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) {
Image1->Canvas->Font->Name = "SimSun"; // 第7次 F8,游標移到 Name 按 Ctrl+F5 查看值
Image1->Canvas->Font->Size = 30; // 第7次 F8 後已執行
Image1->Canvas->TextOut(0,0,Edit3->Text); // 第8次 F8
} // 第9次 F8 → 函數結束
void __fastcall TForm1::Button1Click(TObject *Sender) {
AnsiString Text;
int i, j;
for (i=0; i<30; i++) {
for (j=0; j<30; j++) {
if (Image1->Canvas->Pixels[j][i] == clWhite) // ← 游標放這行按 F5 設斷點
Text = Text + Edit2->Text;
else
Text = Text + Edit1->Text;
}
Memo1->Lines->Add(Text);
Text = "";
}
}
程式停在斷點後,用 F8 逐行、Ctrl+F5 跳出迴圈、F9 繼續運行。確認無誤後取消斷點(再按一次 F5)。
調試器不是萬能藥,但不用調試器絕對是盲人騎瞎馬。熟練掌握這幾個鍵,效率提升十倍不止。