正在收集工作区信息
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 明白为什么了