RT-Thread之debug使用


簡介

介紹RT-Thread RTOS的Debug功能使用,包括配置和使用。
開啟Debug功能后,設計者可以在需要的位置使用LOG_DLOG_ILOG_ELOG_W向控制台輸出信息,方便調試使用,使用形式參考rt_kprintf

ENV工程配置

在工程目錄啟動ENV,輸入menuconfig進入配置界面,選擇RT-Thread Kernel並進入

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

保存后退出,在ENV控制台更新重新編譯工程。rtconfig.h的RT-Thread Kernel項里會增加RT_DEBUGRT_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`內最終使用的變量,具體可以閱讀源文件。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM