正在收集工作區信息
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 明白為什麼了