Bästa sättet för debugutskrift

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
thepirateboy
EF Sponsor
Inlägg: 2109
Blev medlem: 27 augusti 2005, 20:57:58
Ort: Borlänge

Bästa sättet för debugutskrift

Inlägg av thepirateboy »

Ofta när man jobbar med mikroprocessorer så har man uart:n kopplad till datorn
för att kunna skriva ut diverse debugutskrifter. När det senasre blir dags för release
vill man kunna "avaktivera" dessa vid kompilering för att få snabbare och mindre kod.

Normalt brukar jag skriva nåt i stil med:

Kod: Markera allt

#if (DEBUG > 0) 
                    com_send_string("Sleep command received\r\n");  
#endif 
Nackdelen med denna metod är att jag tycker koden blir allmänt rörig med alla dessa defines
för varje debugutskrift.

Jag har försökt skriva allt på en rad men kompilatorn tycker inte om detta.

Finns det något bättre sätt att göra detta på, t ex något som bara tar upp en rad?
johano
Inlägg: 1943
Blev medlem: 22 januari 2008, 10:07:45
Ort: Stockholm

Re: Bästa sättet för debugutskrift

Inlägg av johano »

Du kan ju definiera ett macro OutputDebugString som villkorar DEBUG, typ såhär:

Kod: Markera allt


#ifdef DEBUG
#define OutputDebugString(msg) com_send_string(msg)
#else
#define OutputDebugString(msg)
#endif

och sedan bara använda:

Kod: Markera allt

OutputDebugString("Sleep command received\r\n");
i koden.

/johan
Nerre
Inlägg: 27234
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Bästa sättet för debugutskrift

Inlägg av Nerre »

Ja, att göra det som ett makro är väl antagligen bäst (så slipper man få med det i koden när man stänger av debug).

Det går ju att göra det som en funktion också, men jag vet inte om kompilatorn är tillräckligt smart för att optimera bort funktionsanrop som inte gör nåt...
thepirateboy
EF Sponsor
Inlägg: 2109
Blev medlem: 27 augusti 2005, 20:57:58
Ort: Borlänge

Re: Bästa sättet för debugutskrift

Inlägg av thepirateboy »

Ja, det var ju smart. Tack för det!
Skriv svar