色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

RT-Thread Debug分析與調整方案

冬至子 ? 來源:螺絲松掉的人 ? 作者:螺絲松掉的人 ? 2023-07-22 15:32 ? 次閱讀

RT-Thread 中可以通過 menuconfig 使能相關宏,配置和使用 debug 功能,即可向工作臺輸出程序運行信息,方便調試和使用。

但目前的 rt-thread(5.0.0) 關于 debug 存在 rtdebug.h 和 rtdbg.h 這兩個文件;存在冗余,并且 rtdbg.h 中實現的 LOG_E , LOG_W , LOG_I , LOG_D 更優,因此考慮將 rtdebug.h 中的 RT_DEBUG_LOG 廢棄,全部替換為 LOG_x

問題分析

rtdebug.h 中的 RT_DEBUG_LOG 具體實現如下:

#define RT_DEBUG_LOG(type, message)
do
{
if (type)
rt_kprintf message;
}
while (0)

調用示例如下:

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 可以通過相關宏,實現對特定內核對象的單獨使能調試。

但 rtdbg.h 中的 LOG_x 是將調試信息分為不同的等級,通過與設定的 DBG_LVL 進行比較,輸出不同等級的調試信息。

可以看出 LOG_x 主要針對的是不同等級, RT_DEBUG_LOG 針對的是不同對象。那接下來要考慮的重點就是:廢棄 rtdebug.h 中 RT_DEBUG_LOG 的同時,如何使用 LOG_x 保留單獨調試不同內核對象的特性。

解決方案

使用以下解決方案:

#define DBG_TAG "kernel.thread"
#ifdef RT_DEBUG_THREAD
#define DBG_LVL DBG_LOG
#else
#define DBG_LVL DBG_WARNING
#endif
#include
以內核對象 thread 為例,將以上代碼添加到對應的 thread.c 文件中,即可使用對應的 LOG_x,可以注意到,宏判斷使用的是 #ifdef RT_DEBUG_THREAD 而不再是通過判斷對應宏值為 0 還是 1,這是因為 rtdebug.h 老版本問題,現在可以通過 Kconfig 非常便捷的定義相關宏,因此修改了相應的 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 */

可以看出,修改后更加的簡潔明了。

并且之前使用 RT_DEBUG_LOG 的內核對象的調試信息基本都為 LOG_D 級別,于是就可以使用 LOG_D 進行替換。

需要注意,使用 LOG_x 替換 RT_DEBUG_LOG 時,要刪去換行符,因為 LOG_x 已經帶有換行的效果。

于是我們就通過定義相關的宏,更改了對應內核對象的調試等級,使用 LOG_x 實現了單獨調試不同內核對象的效果。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • RT-Thread
    +關注

    關注

    31

    文章

    1296

    瀏覽量

    40250
收藏 人收藏

    評論

    相關推薦

    RT-Thread記錄(二、RT-Thread內核啟動流程)

    在前面我們RT-Thread Studio工程基礎之上講一講RT-Thread內核啟動流程.
    的頭像 發表于 06-20 00:30 ?5063次閱讀
    <b class='flag-5'>RT-Thread</b>記錄(二、<b class='flag-5'>RT-Thread</b>內核啟動流程)

    RT-Thread編程指南

    RT-Thread編程指南——RT-Thread開發組(2015-03-31)。RT-Thread做為國內有較大影響力的開源實時操作系統,本文是RT-Thread實時操作系統的編程指南
    發表于 11-26 16:06 ?0次下載

    RT-Thread用戶手冊

    RT-Thread用戶手冊——本書是RT-Thread的編程手冊,用于指導在RT-Thread實時操作系統環境下如何進行編 程。
    發表于 11-26 16:16 ?0次下載

    RT-Thread全球技術大會:螢石研發團隊使用RT-Thread的技術挑戰

    RT-Thread全球技術大會:研發團隊使用RT-Thread的技術挑戰 ? ? ? ? 審核編輯:彭靜
    的頭像 發表于 05-27 11:36 ?1323次閱讀
    <b class='flag-5'>RT-Thread</b>全球技術大會:螢石研發團隊使用<b class='flag-5'>RT-Thread</b>的技術挑戰

    RT-Thread全球技術大會:Kconfig在RT-Thread中的工作機制

    RT-Thread全球技術大會:Kconfig在RT-Thread中的工作機制 ? ? ? ? ? ? ? 審核編輯:彭靜
    的頭像 發表于 05-27 14:49 ?1556次閱讀
    <b class='flag-5'>RT-Thread</b>全球技術大會:Kconfig在<b class='flag-5'>RT-Thread</b>中的工作機制

    RT-Thread全球技術大會:在RT-Thread上編寫測試用例

    RT-Thread全球技術大會:在RT-Thread上編寫測試用例 ? ? ? ? ? 審核編輯:彭靜
    的頭像 發表于 05-27 16:28 ?1497次閱讀
    <b class='flag-5'>RT-Thread</b>全球技術大會:在<b class='flag-5'>RT-Thread</b>上編寫測試用例

    RT-Thread全球技術大會:RT-Thread測試用例集合案例

    RT-Thread全球技術大會:RT-Thread測試用例集合案例 ? ? ? ? ? 審核編輯:彭靜
    的頭像 發表于 05-27 16:34 ?2116次閱讀
    <b class='flag-5'>RT-Thread</b>全球技術大會:<b class='flag-5'>RT-Thread</b>測試用例集合案例

    RT-Thread學習筆記 RT-Thread的架構概述

    RT-Thread 簡介 作為一名 RTOS 的初學者,也許你對 RT-Thread 還比較陌生。然而,隨著你的深入接觸,你會逐漸發現 RT-Thread 的魅力和它相較于其他同類型 RTOS
    的頭像 發表于 07-09 11:27 ?4574次閱讀
    <b class='flag-5'>RT-Thread</b>學習筆記 <b class='flag-5'>RT-Thread</b>的架構概述

    RT-Thread文檔_RT-Thread 簡介

    RT-Thread文檔_RT-Thread 簡介
    發表于 02-22 18:22 ?5次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> 簡介

    RT-Thread文檔_RT-Thread 潘多拉 STM32L475 上手指南

    RT-Thread文檔_RT-Thread 潘多拉 STM32L475 上手指南
    發表于 02-22 18:23 ?9次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> 潘多拉 STM32L475 上手指南

    RT-Thread文檔_RT-Thread SMP 介紹與移植

    RT-Thread文檔_RT-Thread SMP 介紹與移植
    發表于 02-22 18:31 ?9次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> SMP 介紹與移植

    RT-Thread文檔_ringbuffer

    RT-Thread文檔_ringbuffer
    發表于 02-22 18:40 ?3次下載
    <b class='flag-5'>RT-Thread</b>文檔_ringbuffer

    RT-Thread文檔_workqueue

    RT-Thread文檔_workqueue
    發表于 02-22 18:40 ?1次下載
    <b class='flag-5'>RT-Thread</b>文檔_workqueue

    基于RT-Thread Studio學習

    前期準備:從官網下載 RT-Thread Studio,弄個賬號登陸,開啟rt-thread學習之旅。
    的頭像 發表于 05-15 11:00 ?4034次閱讀
    基于<b class='flag-5'>RT-Thread</b> Studio學習

    RT-Thread v5.0.2 發布

    RT-Thread 代碼倉庫地址: ●? https://github.com/RT-Thread/rt-thread RT-Thread 5.0.2 版本發布日志詳情: ●? htt
    的頭像 發表于 10-10 18:45 ?1530次閱讀
    <b class='flag-5'>RT-Thread</b> v5.0.2 發布
    主站蜘蛛池模板: 乌克兰14一18处交见血| 精品久久中文字幕有码| 被老头下药玩好爽| 国产免费播放一区二区三区| 久草国产在线播放| 揉抓捏打抽插射免费视频| 一个人在线观看免费视频 | 色情www日本欧美| 一二三四中文字幕在线看| a视频在线免费观看| 精品国产自在天天线2019| 人妻中文字幕乱人伦在线 | 日本妈妈xxxx| 伊人影院香蕉久在线26| 国产国产成人人免费影院| 男女无遮挡吃奶gift动态图| 亚洲国产精品特色大片观看| rio 快播| 男人J放进女人P全黄网站| 一本二卡三卡四卡乱码麻豆| 久青草国产97香蕉在线视频| 思思久久99热只有频精品66| 5g在视影讯天天5g免费观看| 疯狂小护士| chinese情侣自拍啪hd| 精品无码国产自产在线观看水浒传 | 肉动漫h黄动漫日本免费观看 | 国产久久精品热99看| 欧美另类一区| 2224x最新网站| 久青草影院| 伊人久久大香线蕉综合电影网| 国产人妻人伦精品1国产| 日本无吗高清| 办公室丝袜老师在线观看| 美女被强奷到抽搐的动态图| 伊伊人成亚洲综合人网| 精品国产乱码久久久久久口爆| 亚洲精品乱码久久久久久v| 国精产品一区一区三区M| 亚洲精品www久久久久久久软件 |