為你的程式加上 Debugging Mode
使用 C 語言開發程式,往往面對的都是數不盡的奇怪臭蟲,若想為程式除錯,通常會使用很多的 printf function,將所有程式執行的流程以及階段訊息印在畫面上。不過,太多的除錯訊息多半也會造成效能的影響,甚至是造成程式在使用上的不便。尋思,若能在 compile 階段設定是否開啟 Debugging Mode,對程式開發和最後包裝釋出,都可減少不少時間花費。 本文主要說明,如何利用 Autotool 和 C 語言 Macro,在 ./configure 執行階段決定啟動 Debugging Mode: ./configure --enable-debug 要達成目標,首先必需修改 configure.ac 並增加設定,使之後產生的 configure 檔案可支援 --enable-debug: AC_ARG_ENABLE(debug, AC_HELP_STRING([--enable-debug], [Enable debugging]), CFLAGS="$CFLAGS -g -D_DEBUG") 然後在程式中的 C Header (確定該檔案是所有程式碼都會 Include 的 Header),加讓以下 Macro: #ifdef _DEBUG #define DEBUG(format, args...) printf("[%s:%d] "format, __FILE__, __LINE__, ##args) #else #define DEBUG(args...) #endif 然後我們就可以在程式中使用 DEBUG() 的 Macro,用法和 printf function 一樣,只是該字串只在 Debugging Mode 被啟用時才會被編譯進程式裡: void main() { DEBUG("Debugging Mode was enabled\n") printf("Hello World!\n"); } 該程式執行後,就會看到類似下面的訊息: [main.c:3] Debugging mode was enabled Hello World! 由於在 C header ...