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输出的行号。
这个代码超有用,以后出问题也不用死死的去代码里找了

log4j怎样配置才能打印出执行语句所在的类名及行号

0 15 如题  比如 03:23:53,937  INFO LoginAction.java:25 - select ...... Struts  ...
  • comphoner
  • comphoner
  • 2017年08月30日 00:27
  • 422

mysql 在存储过程中输出日志信息

直接用select 打印输出SELECT 'Comment';用concat连接变量输出declare myvar INT default 0; SET myvar = 5; SELECT conca...
  • u011546806
  • u011546806
  • 2015年05月07日 17:38
  • 26653

mysql 储存过程/函数调试

对于某些存储过程很多且复杂的SQL的应用,在短时间内要使得所有MySQL存储过程和函数正常运行,那么如果能找到一个比较好的调试工具,就可以事半功倍, 这里介绍的是dbForge Studio for ...
  • liuxiao723846
  • liuxiao723846
  • 2015年03月11日 10:38
  • 2927

MYSQL 函数说明

http://www.cnblogs.com/ymy124/archive/2012/04/03/2430808.html mysql_init() 描述 分配或初始化与mysql_re...
  • kakaxi2222
  • kakaxi2222
  • 2015年04月25日 16:58
  • 805

C# 写程序日志 log文件

最近项目上,做了一个比较
  • dubuzherui
  • dubuzherui
  • 2014年10月27日 17:04
  • 4828

c#输出文件名、行号、函数名、列号

命名空间:System.Diagnostics 得到相关信息: StackTrace st = new StackTrace(new StackFrame(true)); StackFr...
  • zhuxiaowei716
  • zhuxiaowei716
  • 2015年06月02日 23:18
  • 2604

程序日志中自动记录所在函数名、文件名、行号,并定向输出到一个日志文件

《原创》  #include #define myprintf(format, ...) \                printf("FILE: %d[line: %d][func: %s...
  • tanqiuwei
  • tanqiuwei
  • 2011年12月26日 23:11
  • 780

iOS中打印日志显示系统详细时间,类名,行号及打印值

Q:如何打印当前的函数和行号? A:我们可以在打印时使用一些预编译宏作为打印参数,来打印当前的函数和行号。如: 1 NSLog(@"%s:%d...
  • hghjgbjhgadja
  • hghjgbjhgadja
  • 2016年01月08日 14:35
  • 1087

如何在Objective-C中打印日志记录

在进行IOS编程的过程中,中会遇到这样一个问题:初学者在代码中写了很多NSLog()函数,来确定程序的运行进程,当项目越写越大,因NSLog带来的末端输出信息会越来越多,这是已经很不难分清每个 NSL...
  • iphone_ning
  • iphone_ning
  • 2014年01月23日 16:33
  • 1493

Unity Shader 内置函数

编写Unity Shader时有很多内置函数,在网上查找了一些,把他们记录了下来,以供大家参考使用 参考网址:http://www.cppblog.com/lai3d/archive/2...
  • a6627651
  • a6627651
  • 2016年02月17日 14:46
  • 22184
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Log输出打印输出LOG所在的函数名以及行号
举报原因:
原因补充:

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