Log输出打印输出LOG所在的函数名以及行号

转载 2015年07月07日 21:27:59

http://www.amobbs.com/thread-5618306-1-1.html

我来发个代码,这个代码可以通过串口输出函数名以及行号。方便通过串口输出信号,查看哪里出现问题。

代码如下:
static char output[256]={0};
void dbg_print_log(const char *msg,
            const char *pccFunc,    
            const int   ciLine,
            const char *pccFmt,...)
{
        va_list arglst;

        va_start(arglst,pccFmt);
        vsnprintf(output,sizeof(output),pccFmt,arglst);
        printf("[%s][%s():%04d] %s\n",msg, pccFunc, ciLine, output);
        va_end(arglst);
}
void dbg_print_buf(const char *msg, ...)
{
        UINT16 i;
        UINT8* buf;
        UINT32 cnt;
        va_list arglst;
        va_start(arglst, msg); 
        buf = va_arg( arglst, UINT8*);         
        cnt = va_arg( arglst, UINT32); 

        printf("[%s][L:%d] ", msg,cnt);
        for(i=0;i<cnt;i++)
        {
                printf("0x%02X,",buf[i]);
        }
        printf("\n");
        va_end(arglst);
}
头文件:

void dbg_print_buf(const char *msg, ...); 
void dbg_print_log(const char *msg,
            const char *pccFunc,    
            const int   ciLine,
            const char *pccFmt,...);
#define DBG_INFO(...) dbg_print_log("INFO", __FUNCTION__, __LINE__, __VA_ARGS__)
#define DBG_BUF(...) dbg_print_buf("BUFF",__VA_ARGS__)

比如输出:
[INFO][function():1100] hello world!
function为函数名,1100为log输出的行号。
这个代码超有用,以后出问题也不用死死的去代码里找了

相关文章推荐

Android自由行之走进zxing,轻松实现二维码扫描

现在很多App都集成了扫一扫功能,最常用的微信、QQ、手机助手等。二维码也使得生活变得更加简洁,扫一扫订餐、扫一扫下载等等。那么,说到二维码,我们不得不提Google一个开源的扫码框架:zxing。 ...

介绍 SMS over SGs

LTE在3GPPrelease 8中被定义为新一代无线通信标准, LTE是一个单纯的分组交换系统,不支持传统的电路交换业务,因此LTE只能以Voiceover IP的方式来提供语音业务。     从...

Logcat过滤及常见用法整理

Usage: logcat [options] [filterspecs] options include: -s              Set defaul...

相机知识问答

A 1、持续对焦和触摸对焦的工作原理; 答:首先要了解一下对焦的工作原理。 AF工作原理: 就是通过微距移动镜头,sensor采集图像并传送给ISP处理, ISP把当前frame的对比度值(FV)...

Android Studio logcat 过滤 一个或多个TAG

我们在用LogCat打印log的时候,希望某些TAG不被打印出来,那么就可以用下面的语句,将某些TAG加入黑名单,不能打印在控制台中: ^(?!.*(USP)).*$  这就代表TAG为USP的日志...

ubuntu eclipse 解决android新建项目出现appcompat_v7报错和R文件无法生成的问题(windows同)

问题现象: 为了是之前的Eclipse项目导入到Android Studio,重新装了Eclipse,下载好ADT插件和SDK后,开始新建项目,由于新建项目的最低支持的SDK小于14,需要appco...

linux的poll机制

Poll就是监控文件是否可读的一种机制,作用与select一样。 应用程序的调用函数如下: int poll(struct pollfd *fds,nfds_t nfds, int timeout)...

数据读写SD卡下半部分析

接上一篇文章 read 系统调用剖析  在上一文中,作者已经将Read 整个调用过程从Linux 系统调用(SCI,system call interface)至IO调度的整个流程已经讲解的非常清晰...

eMMC性能分析

1.1概述 eMMC (Embedded Multi Media Card) 为MMC协会所订立的、主要是针对手机产品为主的内嵌式存储器标准规格。 eMMC的一个明显优势是在封装中集成了一个控制器...

linux下隐藏文件 和 显示隐藏文件命令

(1)linux下隐藏文件和文件夹(目录)需要用到 mv 命令、其实超简单的. 例子:将a目录隐藏 命令:mv a .a (2) linux下显示隐藏文件有两种可能:显示所有文件,包括隐藏文件...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)