Debug格式化输出----基于C语言

Debug格式化输出—-基于C语言

1. 使用宏实现

举例:

#include <stdio.h>

#define ECHO_COLOR_NONE         "\033[0;0m"
#define ECHO_COLOR_GREEN        "\033[0;32m"

#define debug(fmt, args...)     \
          printf(ECHO_COLOR_GREEN"Debug: " fmt "(file: %s, func: %s, line: %d)\n"ECHO_COLOR_NONE, ##args, __FILE__, __func__, __LINE__);
// 测试程序
int main(void)
{
     int data = 10;

     debug("This is a test, data = %d", data);
     printf("OK\n");

     return 0;
}

2. 使用函数实现

在实现过程中要用到几个关键宏:

#include <stdarg.h>

va_list argp;
va_start(argp, fmt);
va_end(argp);

要用到vsnprintf()函数

vsnprintf()
头文件:#include <stdarg.h>
函数原型:int vsnprintf(char *str, size_t size, const char *format, va_list ap);
函数说明:将可变参数格式化输出到一个字符数组

举例:

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

#define ECHO_COLOR_NONE         "\033[0;0m"
#define ECHO_COLOR_GREEN        "\033[0;32m"

#define debug_print(message, ...)   debug_msg(message, __FILE__, __func__, __LINE__, ##__VA_ARGS__)

void debug_type(char *fmt, char *file, const char *func, int line, va_list argp)
{
     char buffer[128] = { 0 };

     vsnprintf(buffer, sizeof(buffer), fmt, argp);
     printf(ECHO_COLOR_GREEN"Debug: %s(file: %s, func: %s, line: %d)\n"ECHO_COLOR_NONE, buffer, file, func, line);
}

void debug_msg(char *fmt, char *file, const char *func, int line, ...)
{
     va_list arg_list;
     va_start(arg_list, line);
     debug_type(fmt, file, func, line, arg_list);
     va_end(arg_list);
}
// 测试程序
int main(void)
{
     int data = 10;

     debug_print("This is a test, data = %d", data);
     printf("OK\n");

     return 0;
}

小结

通过以上两种方法就可以实现用debug输出含有位置信息的调试信息。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

micro虾米

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值