RT-Thread 中可以通過 menuconfig 使能相關(guān)宏,配置和使用 debug 功能,即可向工作臺(tái)輸出程序運(yùn)行信息,方便調(diào)試和使用。
但目前的 rt-thread(5.0.0) 關(guān)于 debug 存在 rtdebug.h 和 rtdbg.h 這兩個(gè)文件;存在冗余,并且 rtdbg.h 中實(shí)現(xiàn)的 LOG_E , LOG_W , LOG_I , LOG_D 更優(yōu),因此考慮將 rtdebug.h 中的 RT_DEBUG_LOG 廢棄,全部替換為 LOG_x
問題分析
rtdebug.h 中的 RT_DEBUG_LOG 具體實(shí)現(xiàn)如下:
#define RT_DEBUG_LOG(type, message)
do
{
if (type)
rt_kprintf message;
}
while (0)
調(diào)用示例如下:
RT_DEBUG_LOG(RT_DEBUG_THREAD, ("startup a thread:%s with priority:%dn",
thread->parent.name, thread->current_priority));
/* RT_DEBUG_THREAD default is 0 */
可以看出, RT_DEBUG_LOG 可以通過相關(guān)宏,實(shí)現(xiàn)對(duì)特定內(nèi)核對(duì)象的單獨(dú)使能調(diào)試。
但 rtdbg.h 中的 LOG_x 是將調(diào)試信息分為不同的等級(jí),通過與設(shè)定的 DBG_LVL 進(jìn)行比較,輸出不同等級(jí)的調(diào)試信息。
可以看出 LOG_x 主要針對(duì)的是不同等級(jí), RT_DEBUG_LOG 針對(duì)的是不同對(duì)象。那接下來要考慮的重點(diǎn)就是:廢棄 rtdebug.h 中 RT_DEBUG_LOG 的同時(shí),如何使用 LOG_x 保留單獨(dú)調(diào)試不同內(nèi)核對(duì)象的特性。
解決方案
使用以下解決方案:
#define DBG_TAG "kernel.thread"
#ifdef RT_DEBUG_THREAD
#define DBG_LVL DBG_LOG
#else
#define DBG_LVL DBG_WARNING
#endif
#include
以內(nèi)核對(duì)象 thread 為例,將以上代碼添加到對(duì)應(yīng)的 thread.c 文件中,即可使用對(duì)應(yīng)的 LOG_x,可以注意到,宏判斷使用的是 #ifdef RT_DEBUG_THREAD 而不再是通過判斷對(duì)應(yīng)宏值為 0 還是 1,這是因?yàn)?rtdebug.h 老版本問題,現(xiàn)在可以通過 Kconfig 非常便捷的定義相關(guān)宏,因此修改了相應(yīng)的 Kconifg 文件:
/* old version */
config RT_DEBUG_THREAD_CONFIG
bool "Enable debugging of Thread State Changes"
default n
config RT_DEBUG_THREAD
int
default 1 if RT_DEBUG_THREAD_CONFIG
/* old version */
==============================================================================
/* new version /
config RT_DEBUG_THREAD
bool "Enable debugging of Thread State Changes"
default n
/ new version */
可以看出,修改后更加的簡(jiǎn)潔明了。
并且之前使用 RT_DEBUG_LOG 的內(nèi)核對(duì)象的調(diào)試信息基本都為 LOG_D 級(jí)別,于是就可以使用 LOG_D 進(jìn)行替換。
需要注意,使用 LOG_x 替換 RT_DEBUG_LOG 時(shí),要?jiǎng)h去換行符,因?yàn)?LOG_x 已經(jīng)帶有換行的效果。
于是我們就通過定義相關(guān)的宏,更改了對(duì)應(yīng)內(nèi)核對(duì)象的調(diào)試等級(jí),使用 LOG_x 實(shí)現(xiàn)了單獨(dú)調(diào)試不同內(nèi)核對(duì)象的效果。
-
RT-Thread
+關(guān)注
關(guān)注
31文章
1261瀏覽量
39839
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論