簡介
介紹RT-Thread RTOS的Debug功能使用,包括配置和使用。
開啟Debug功能后,設計者可以在需要的位置使用LOG_D、LOG_I、LOG_E、LOG_W向控制台輸出信息,方便調試使用,使用形式參考rt_kprintf。
ENV工程配置
在工程目錄啟動ENV,輸入menuconfig進入配置界面,選擇RT-Thread Kernel並進入

使用上下鍵移動到Enable debugging features項,使用 空格鍵 勾選該項

保存后退出,在ENV控制台更新重新編譯工程。rtconfig.h的RT-Thread Kernel項里會增加RT_DEBUG 和 RT_DEBUG_COLOR兩個宏定義
程序使用
不同的任務使用debug時需要定義自身的參數,而且定義要寫在使用的.c文件內,定義使用有兩種形式
- rtdbg.h文件
直接通過rtdbg.h使用debug時的定義格式為
define DBG_TAG "TAG_NAME"
define DBG_LVL DBG_INFO //開啟的debug級別
include <rtdbg.h> //must after of DBG_LVL, DBG_TAG or other options
先定義`DBG_TAG`和`DBG_LVL`再包含`rtdbg.h`文件,因為`rtdbg.h`內部處理DEBUG函數時會依據這倆變量,具體內容可以打開`rtdbg.h`閱讀。
- drv_log.h文件
通過`drv_log.h`使用debug時的定義格式為
define DRV_DEBUG //也可以不定義DRV_DEBUG
define LOG_TAG "TAG_NAME"
include <drv_log.h> //must after of DRV_DEBUG, LOG_TAG or other options
這種方式是對上一種方法的封裝,使用debug功能時只能開啟`DBG_LOG`或者`DBG_INFO`級別,因為`drv_log.h`已經固定了處理流程,最后還是包含`rtdbg.h`
ifndef LOG_TAG
define DBG_TAG "drv"
else
define DBG_TAG LOG_TAG
endif /* LOG_TAG */
ifdef DRV_DEBUG
define DBG_LVL DBG_LOG
else
define DBG_LVL DBG_INFO
endif /* DRV_DEBUG */
include <rtdbg.h>
## 總結
Debug使用時也可以添加其它宏定義,通過這兩種方法定義只是為`rtdbg.h`處理提供依賴,也可以直接定義`rtdbg.h`內最終使用的變量,具體可以閱讀源文件。
