在进行系统调试的过程中,以前用的是printf或者printk打印信息,不是特别方便,所以做一个调试开关可以在调试的时候打开这个开关,不需要调试的时候直接关闭就可以。
参考源码:
#include <stdio.h>
#define __DEBUG__
#ifdef __DEBUG__
#define DEBUG(format,...) printf("File: "__FILE__", Line: %05d, Func: %s ++++ "format"\n", __LINE__,__func__, ##__VA_ARGS__)
#else
#define DEBUG(format,...)
#endif
int main() {
DEBUG("check me!");
return 0;
}
Makefile文件:
CC=gcc
OBJ=debug
OBJS=debug.c
CFLAGS= -Wall -g -lm
$(OBJ):$(OBJS)
$(CC) $(CFLAGS) $^ -o $@
$*.o:$%.c
$(CC) $(CFLAGS) -c $< -o $@
.PHONY:clean
clean:
$(RM) *.o debug
编译生成debug可以执行程序。
运行该程序:
现在将调试信息关掉,即将第二行注释掉。
再次编译程序!
可以看到没有调试信息了,实现了调试开关的作用,这种调试很方便,用的时候打开,不用的时候关掉!
一些常用的宏参考:
__LINE__:显示当前的行号
__func__:显示当前插入的是什么函数
__FILE__:显示当前的文件名
__DATE__:显示当前的编译日期
__TIME__:显示当前编译时间