Print debug message based on MinGW

夜深了,记录一篇打印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 LOG_H_

#include <stdarg.h>
void LOGBASE(const char *file, const int line, const char *funcName, const char * fmt, ...)
{
    #define BUFFSIZE    1024
    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  LOGDBG(fmt,args...)   LOGBASE(__FILE__,__LINE__,__FUNCTION__, fmt, ##args)

#endif /* LOG_H_ */

我们使用的时候直接调用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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值