正在收集工作区信息
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_ON
和 TLS_DBG_OFF
:定义调试开关的状态。TLS_DBG_SIMPLE
:定义是否使用简单的调试输出。TLS_DBG_LEVEL_INFO
、TLS_DBG_LEVEL_WARNING
、TLS_DBG_LEVEL_ERR
和 TLS_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 个许可证类型的类似代码
吐槽一下,为什么要写
TLS_DBG_ON
和TLS_DBG_OFF
这两个 macro,不能直接写一个TLS_DBG_SWITCH
吗?@shiinakaze 明白为什么了