关于 W80X debug printf

发布于 2024-12-24 10:21:10

正在收集工作区信息

wm_debug.h

文件定义了调试模块的API和宏,用于控制调试信息的输出。以下是对代码的详细分析:

头文件包含

#include <stdio.h>
#include <stdlib.h>
#include "wm_config.h"
#include "wm_osal.h"

这些头文件提供了标准输入输出函数、标准库函数以及项目配置和操作系统抽象层的函数和宏定义。

调试开关和级别定义

#define TLS_DBG_ON                  1
#define TLS_DBG_OFF                 0

#define TLS_DBG_SIMPLE              1

#define TLS_DBG_LEVEL_INFO          TLS_DBG_OFF
#define TLS_DBG_LEVEL_WARNING       TLS_DBG_OFF
#define TLS_DBG_LEVEL_ERR           TLS_DBG_OFF
#define TLS_DBG_LEVEL_DUMP          TLS_DBG_OFF

#define TLS_GENERAL_DBG             TLS_DBG_OFF
  • TLS_DBG_ONTLS_DBG_OFF:定义调试开关的状态。
  • TLS_DBG_SIMPLE:定义是否使用简单的调试输出。
  • TLS_DBG_LEVEL_INFOTLS_DBG_LEVEL_WARNINGTLS_DBG_LEVEL_ERRTLS_DBG_LEVEL_DUMP:定义不同级别的调试开关。
  • TLS_GENERAL_DBG:定义通用调试信息开关。

调试输出宏定义

根据 TLS_DBG_SIMPLE 的值,定义不同的调试输出宏:

#if TLS_DBG_SIMPLE
#define __TLS_DBGPRT_INFO(fmt, ...)       printf(fmt, ##__VA_ARGS__)
#define __TLS_DBGPRT_WARNING(fmt, ...)    printf(fmt, ##__VA_ARGS__)
#define __TLS_DBGPRT_ERR(fmt, ...)        printf(fmt, ##__VA_ARGS__)
#else
#define __TLS_DBGPRT_INFO(fmt, ...)                     \
do {                                                         \
       u32 time = tls_os_get_time();                     \
       printf("[WM_I] <%d.%02d> %s : "fmt, (time/100), (time%100), __func__ , ##__VA_ARGS__); \
} while (0)

#define __TLS_DBGPRT_WARNING(fmt, ...)                     \
do {                                                         \
       u32 time = tls_os_get_time();                     \
       printf("[WM_W] <%d.%02d> %s : "fmt, (time/100), (time%100), __func__ , ##__VA_ARGS__); \
} while (0)

#define __TLS_DBGPRT_ERR(fmt, ...)                     \
do {                                                         \
       u32 time = tls_os_get_time();                     \
       printf("[WM_E] <%d.%02d> %s : "fmt, (time/100), (time%100), __func__ , ##__VA_ARGS__); \
} while (0)
#endif
  • 如果 TLS_DBG_SIMPLE 为 1,则使用简单的 printf 输出调试信息。
  • 否则,输出带有时间戳和函数名的调试信息。

调试信息输出宏

根据不同的调试级别和通用调试开关,定义不同的调试信息输出宏:

#if (TLS_GENERAL_DBG && TLS_DBG_LEVEL_INFO)
#define TLS_DBGPRT_INFO(f, a...)     __TLS_DBGPRT_INFO(f, ##a)
#else
#define TLS_DBGPRT_INFO(f, a...)
#endif

#if (TLS_GENERAL_DBG && TLS_DBG_LEVEL_WARNING)
#define TLS_DBGPRT_WARNING(f, a...)  __TLS_DBGPRT_WARNING(f, ##a)
#else
#define TLS_DBGPRT_WARNING(f, a...)
#endif

#if (TLS_GENERAL_DBG && TLS_DBG_LEVEL_ERR)
#define TLS_DBGPRT_ERR(f, a...)      __TLS_DBGPRT_ERR(f, ##a)
#else
#define TLS_DBGPRT_ERR(f, a...)
#endif

#if (TLS_GENERAL_DBG && TLS_DBG_LEVEL_DUMP)
void    TLS_DBGPRT_DUMP(char *p, u32 len);
#else
#define TLS_DBGPRT_DUMP(p, len)
#endif
  • TLS_DBGPRT_INFO:输出信息级别的调试信息。
  • TLS_DBGPRT_WARNING:输出警告级别的调试信息。
  • TLS_DBGPRT_ERR:输出错误级别的调试信息。
  • TLS_DBGPRT_DUMP:输出内存转储信息。

总结

wm_debug.h

文件提供了一套灵活的调试信息输出机制,通过宏定义可以方便地控制调试信息的输出级别和格式。根据项目需求,可以开启或关闭不同级别的调试信息,以便在开发和调试过程中获取必要的信息。

找到具有 2 个许可证类型的类似代码

2 条评论

发布
问题