原文地址:http://www.manongjc.com/detail/15-trcbrhrbricessx.html
简介
介绍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
内最终使用的变量,具体可以阅读源文件。