一个简单debug信息输出方法
在软件开发时,经常要在代码关键地方添加必要调试信息跟踪代码执行分支或者参数值,为了调试和软件发布方便,调试代码往往要求做到:
1)在debug时生效,而在发布时为了控制编译产物的大小,往往需要去掉debug代码;
2)可用通过参数控制debug信息的输出等级(类型);
下面通过一个例子,介绍如何在代码中添加debug信息的方法。
首先,先在公共的头文件中定义一个宏,比如:
#ifdef DBG
#define DBG_PRINT(Level, Fmt) \
{ \
if (Level <= DebugLevel) \
{ \
printf Fmt; \
} \
}
#else
/* no debug information */
#define DBG_PRINT(Level, Fmt)
#endif
可以看到,这个宏通过条件编译#ifdef DBG … #else … #endif控制;另外,宏通过参数level,对打印内容进行控制;
然后,在外部的Makefile中,通过Makefile参数CFLAGS 进行控制
EXEC = helloworld
OBJS = helloworld.o
\# If you want to debug app, add following line
CFLAGS