zoukankan      html  css  js  c++  java
  • 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`内最终使用的变量,具体可以阅读源文件。
  • 相关阅读:
    【转载】apache kafka系列之-监控指标
    自动恢复被挂掉的hbase region server
    beeline连接hive server遭遇MapRedTask (state=08S01,code=1)错误
    sqoop-1.4.6安装配置
    spark RDD的元素顺序(ordering)测试
    【转载】常用Maven插件介绍
    【转载】Spark SQL 1.3.0 DataFrame介绍、使用
    SparkSQL之数据源
    spark集成hive遭遇mysql check失败的问题
    hive启动报错: Found class jline.Terminal, but interface was expected
  • 原文地址:https://www.cnblogs.com/niu-li/p/12469306.html
Copyright © 2011-2022 走看看