在linux编程中,gdb是个不错的调试工具。但是当文件数量上百,甚至上千之后,使用gdb调试就是一场灾难。因此在程序中加入合理的打印信息,能更高效的定位到问题的所在。下面就是定义的宏。分别是WARNING,INFO,ERROR。利用了, __FILE__,_FUNCTION__,__LINE__变量。
- #define ERROR(...) /
- do{ /
- fprintf(stderr, "[ERROR ]%s %s(Line %d): ",__FILE__,__FUNCTION__,__LINE__); /
- fprintf(stderr, __VA_ARGS__); /
- }while(0)
- #define WARNING(...) /
- do{ /
- fprintf(stdout, "[WARNING]%s %s(Line %d): ",__FILE__,__FUNCTION__,__LINE__); /
- fprintf(stdout, __VA_ARGS__); /
- }while(0)
- #define INFO(...) /
- do{ /
- fprintf(stdout, "[INFO ]%s %s(Line %d): ",__FILE__,__FUNCTION__,__LINE__); /
- fprintf(stdout, __VA_ARGS__); /
- }while(0)
- #define SHOW_TIME(...) /
- do{/
- extern unsigned long long gLatestTime;/
- timeval tp;/
- gettimeofday(&tp, NULL);/
- unsigned long long now = tp.tv_sec*1000000+tp.tv_usec; /
- if(gLatestTime != 0) /
- { /
- fprintf(stdout, ">>>>>>>>>Used Time: %s[%d], %s: %ld.%ld, %llu ms ", __FILE__, __LINE__, __func__, tp.tv_sec, tp.tv_usec, (now-gLatestTime)/1000);/
- fprintf(stdout, __VA_ARGS__); /
- fprintf(stdout, "/n"); /
- } /
- gLatestTime = now;/
- }while(0)
- #ifdef DEBUG
- #define DBG(...) /
- do{ /
- fprintf(stdout, "[DEBUG ]%s %s(Line %d): ",__FILE__,__FUNCTION__,__LINE__); /
- fprintf(stdout, __VA_ARGS__); /
- }while(0)
- #else
- #define DBG(...)
- #endif
这样在合理的地方加入打印信息。通过打印信息尽快的找到处问题的文件,函数和行数。高效,快捷!