2009年10月19日 星期一

好用的除錯編碼

我們在寫程式難免會有需要除錯的時候, 但是要如何除錯, 使用IDE(整合式開發環境)是一個很好的選擇, 但是若沒有這樣的工具時, 這種現象在embdded的系統中是常碰到的情形, 以下則是我較常用的方式可供參考:

#define VICTOR_DEBUG
#ifdef VICTOR_DEBUG
#define dbg_printf(x, args...) printf("%s,%s,%d:" x, __FILE__, __FUNCTION__, __LINE__, ##args)
#else
#define dbg_printf(x, args...)
#endif

尤其是有很多程式碼時, 這會是一個較簡單又好用的方式, 其中__FILE__, __FUNCTION__, __LINE__都是編譯時編譯會自動幫你轉換的資訊, 如此一來你可以使用像printf的寫法, 而將一些除錯碼加入你的程式碼中, 另外我又用VICTOR_DEBUG的定義將其包圍, 如此一來, 當你不用時將那一行mark掉, 重新編譯就好了, 以下則是簡單的使用範例:

int main(int argc, char *argv[])
{
dbg_printf("\n");
........
........
function();
dbg_printf("\n");
.....
}

int function(int parm)
{
...........
..........
dbg_printf("\n");
.............
.........
dbg_printf("count=%d\n", count);
........
}

沒有留言:

張貼留言