建立Debug调试日志

参考链接:1 ((sizeof(n)+sizeof(int)-1)&~(sizeof(int)-1))

                    2 对C语言中va_list,va_start,va_arg和va_end的一点理解 

                    3 C 库宏 - va_start()

                    4  vsnprintf函数用法

                    5 C,C++宏中#、##和__VA_ARGS__的理解

                    6 C语言中函数参数的省略号

                    7 函数参数带省略号的用法

                   8 调试技巧——宏定义开关和printf

                   9 怎样写参数个数可变的宏

                  10 __VA_ARGS__用法

 

example 1:

main.c

#include <stdio.h>
#include "Debug.h"

int main(int argc, char *argv[])
{
	int data = 999;
    printDebugMsg("TestProgram", "data= %d", data);
	printf("Hello C-Free!\n");
	return 0;
}

Debug.h

#ifndef __DEBUG_H__
#define __DEBUG_H__

#ifdef __cplusplus
	extern "C" {
#endif

#include <stdio.h>
#include <stdarg.h>

#define _DEBUG
#ifdef  _DEBUG
	//#define DEBUG_TO_FILE
	#ifdef  DEBUG_TO_FILE
	//调试信息输出到以下文件
	#define DEBUG_FILE "..//tmp//debugmsg.txt" 
	//调试信息的缓冲长度 
	#define DEBUG_BUFFER_MAX    4096
    //将调试信息输出到文件中
	#define printDebugMsg(moduleName, format, ...) {\
	char buffer[DEBUG_BUFFER_MAX+1] = {0};\
	snprintf(buffer, DEBUG_BUFFER_MAX,\
			"[%s] "format" File:%s, Line:%d\n", moduleName, ##__VA_ARGS__, __FILE__, __LINE__);\
	FILE* fd = fopen(DEBUG_FILE, "a");\
	if(fd != NULL){\
		fwrite(buffer, strlen(buffer), 1, fd);\
		fflush(fd);\
		fclose(fd);\
		}\
	}
	#else //#ifndef  DEBUG_TO_FILE
	//将调试信息输出到终端 
	#define printDebugMsg(moduleName, format, ...)\
	                printf("[%s] "format" File:%s, Line:%d\n", moduleName, ##__VA_ARGS__, __FILE__, __LINE__);
 
	#endif //end for #ifdef DEBUG_TO_FILE
#else
	//发行版本,什么也不做 
    #define printDebugMsg(moduleName, format, ...)
#endif //end for #ifdef _DEBUG 



/*--------------------Private Function---
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值