如何找到 C程式的錯誤?
程式的錯誤可以簡單的分兩類:
一個是語法的錯誤,C 語言的編譯器 (complier) gcc
會幫我們在編譯時,找出語法的錯誤。
另一個是執行結果的錯誤,這就要使用 C 語言的偵錯工具 (debugger) gdb
來幫助我們發現哪裡可能是錯誤的原因。
gdb
在安裝的 MinGW-w64 時,就已經同時安裝好。gcc
編譯時,加入 -g
參數。這是用於加入除錯資訊,供 gdb 進行除錯。如何開始偵錯?
先在可能錯誤,或想開始釐清問題的程式碼行列,點選行號左邊的空白處,設定「中斷點」。或是在當下程式碼行列,按下快捷鍵 F9 去設定或取消「中斷點」。
然後開始編譯、建置和執行:
在 VS Code 編輯器的右上方有個三角形圖示及右側小 v
圖示,點選小 v
圖示展開的選單「偵錯 C/C++ 檔案」。
可以參考第七天的文章 “編譯並執行C語言程式”的說明。
如果 .vscode
資料夾內還沒有建立設定檔 tasks.json
,C/C++延伸模組會詢問你「選取偵錯設定」,你就選取「C/C++: gcc.exe 建置及偵錯使用中的檔案 preLaunchTask: … 」,它會自動建立設定檔 tasks.json
或是選取指令選單 執行
> 啟動偵錯
或按下快捷鍵 F5
同樣的,如果 .vscode
資料夾內還沒有建立設定檔 tasks.json
,就先會詢問你「選取偵錯工具」,你就選取「C++ (GDB/LLDB)」,然後再選取組態「C/C++: gcc.exe 建置及偵錯使用中的檔案 preLaunchTask: … 」
當下的C語言程式檔案就會在VS Code 終端機內開始建置和執行偵錯。
甚麼是「執行與偵錯」的組態設定?
對於新手而言,VS Code 的偵錯組態設定 (debug configuration) 很複雜,除了在先前的設定檔 tasks.json
外,另外還要產生另一設定檔 launch.json
。
但慶幸的是,當在「執行與偵錯 」偵錯啟始頁面點選「建立 launch.json 檔案」, VS Code 會自動產生基本的設定檔 launch.json
。要注意的是,建立前它會詢問要選用甚麼偵錯工具 (debugger),請選擇 「C++(GDB/LLDB)」。如果想了解更詳細,請參考傳送門資料。
而我們前面介紹開始偵錯的步驟,沒有選擇去建立設定檔 launch.json
,在「執行與偵錯」就以「沒有組態」的形式開始偵錯,我認為基本上對於新手開始入門就足夠了。
如何操作偵錯介面?
開始偵錯時, VS Code 的「主要側邊欄」就會自動切換成「執行與偵錯 (Run and Debug)」,它包含四個方塊:
同時會顯示程式執行控制面板
前三個常用按鍵是:
下面傳送門的文章有提供偵錯介面的詳細介紹。
Debug 的傳送門
🌐 Debugging in Visual Studio Code
🌐 檢查 Visual Studio Code 偵錯工具介面 - Training | Microsoft Learn