Print debug message based on MinGW
原创
©著作权归作者所有:来自51CTO博客作者胡桃小孩儿的原创作品,请联系作者获取转载授权,否则将追究法律责任
夜深了,记录一篇打印log的文章。
我们知道,在C/C++中,一些特定的宏很有用,比如__FILE__
, __LINE__
等,他们可以告诉我们当前程序运行的信息。另外,参数可变的函数,dateType func (char * fmt, …)让我们随心所欲的输入任意个数的参数。结合这两者的优点,可以创建显示程序运行点的log打印函数。这对于bug定位有非常重要的意义。
如下是log函数的实现:
/*
* Log.h
*
* Created on: 2017年12月8日
* Author: weiyang
*/
#ifndef LOG_H_
#define
#include <stdarg.h>
void LOGBASE(const char *file, const int line, const char *funcName, const char * fmt, ...)
{
#define
char buffer[BUFFSIZE] = {0};
int n = sprintf(buffer,"file: %s, line: %d, funcName: %s ",file, line, funcName);
va_list vap;
va_start(vap, fmt); //variable arguments list vap init
vsnprintf(buffer+n, BUFFSIZE-n, fmt, vap); // add list vap to buff
va_end(vap);
printf("%s\n",buffer);
}
#define
#endif
我们使用的时候直接调用LOGBASE即可,将其当作可打印有限字节数的printf函数来用。
如:
int bytes = write(sockfd, &ch, 1);
LOGDBG("write bytes: %d\n", bytes);
将debug 信息输出到日志中,相关应用:
https://github.com/theArcticOcean/enVocabulary/blob/master/Inc/log.h
https://github.com/theArcticOcean/enVocabulary/blob/master/Src/log.cpp
https://github.com/theArcticOcean/enVocabulary/blob/master/Src/main.cpp