-
Notifications
You must be signed in to change notification settings - Fork 5
7. 程式除錯
allen54a0 edited this page Dec 28, 2015
·
3 revisions
-
程式除錯,有沒有更好方法?
7.1 DebugMacro.ino
一般Arduino 相容版沒有硬體的除錯機制(如JTAG 除錯介面),所以通常都用Serial.print/ Serial.println 將除錯訊息印出,用以確認程式執行的狀態。一旦程式完成後,如果不想把這些東西印出來,只得將除錯訊息一行一行的槓掉。
沒有更好的方法嗎,有,而且不困難,簡單的範例如下:
/* DedugMacro.ino * 除錯訊息開關範例 * 使用時機 : 部分除錯訊息不想在正式執行輸出,可以用這個小技巧 * 使用方法 : 設定 " #define DEBUG X " , X ==0 不印出訊息,X==1 印出訊息 * * 引用來源 : C 教科書衍生 * * Author : allen54a0 * DATE: 2015 1229 * */
#define DEBUGP(x) if (DEBUG == 1) { x ; }
void setup() { // put your setup code here, to run once:
Serial.begin(9600);
Serial.println("Program Start");
}
void loop() { //
//do something, 一般的程式操作
//Normal Dump ,一般需要輸出的訊息
Serial.println("Status DUMP");
//dump debug Message , 僅有除錯時要印出輸出的訊息,正式執行時不輸出
DEBUGP(Serial.println("DEBUG DUMP"));
delay(1000);
}
執行結果
#define DEBUG 1 : Program Start Status DUMP DEBUG DUMP Status DUMP DEBUG DUMP Status DUMP #define DEBUG 0 : Program Start Status DUMP Status DUMP Status DUMP