Skip to content
allen54a0 edited this page Dec 28, 2015 · 3 revisions
  1. 程式除錯,有沒有更好方法?

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 DEBUG 1 // 藉由定義 0 或 1 來關閉或開啟除錯訊息

#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

Clone this wiki locally