4813|2

420

帖子

0

TA的资源

纯净的硅(初级)

楼主
 

一种控制打印信息输出级别的实现 [复制链接]

本帖最后由 jorya_txj 于 2016-7-11 10:19 编辑

由于项目调试过程中,观察系统输出的打印信息是调试必不可少的一个手段,也是jlink等仿真器无所替代的。但是从众多的打印信息中挑出有价值的打印信息又是一种体力活,会浪费不少宝贵的调试时间,那有没有一种可以控制打印信息级别的方法呢?答案是肯定的。

raw-os的新版本中添加了raw_bug.h 用来实现控制打印信息级别。简略介绍如下:

#define RAW_DEBUGF(debug, message) do { \
                               if ( \
                                   ((debug) & RAW_DBG_ON) && \
                                   ((debug) & RAW_DBG_TYPES_ON) && \
                                   ((RAW_U16)((debug) & RAW_DBG_MASK_LEVEL) >= RAW_DBG_MIN_LEVEL)) { \
                                 RAW_PLATFORM_DIAG(message); \
                                 if ((debug) & RAW_DBG_HALT) { \
                                   while(1); \
                                 } \
                               } \
                             } while(0)

上面的打印信息中,总共有3个关口来控制打印,第一个关口是RAW_DBG_ON, 第二个关口是RAW_DBG_TYPES_ON,
第三个关口是RAW_DBG_MIN_LEVEL。


对于第一个关口是一个全局的开关,RAW_DBG_ON选择是否使能打印信息,第二个关口RAW_DBG_TYPES_ON 可能的定义如下:

#define RAW_DBG_TYPES_ON  (RAW_DBG_ON | RAW_DBG_TRACE )

上面的意思是打开trace信息的打印,但是RAW_DBG_STATE 这个级别的打印则不会显现出来。

第三个关口是控制打印信息级别的输出实现,具体看如下的宏定义:

#define RAW_DBG_LEVEL_ALL     0x00
#define RAW_DBG_LEVEL_OFF     RAW_DBG_LEVEL_ALL /* compatibility define only */
#define RAW_DBG_LEVEL_WARNING 0x01 /* bad checksums, dropped packets, ... */
#define RAW_DBG_LEVEL_SERIOUS 0x02 /* memory allocation failures, ... */
#define RAW_DBG_LEVEL_SEVERE  0x03
#define RAW_DBG_MASK_LEVEL    0x03

通过定义RAW_DBG_MASK_LEVEL 以及RAW_DBG_MIN_LEVEL 来控制打印输出不同重要级别的信息,比如控制warning,serious,
severe 这些从轻到重的级别的打印输出实现。

raw-os 的git仓库为:http://git.oschina.net/raw-os/raw-os


最新回复

楼主可以试试我开源的轻量级 C 日志库 EasyLogger:https://github.com/armink/EasyLogger,不仅仅支持按级别过滤日志,还支持按标签、关键词过滤。  详情 回复 发表于 2016-7-14 08:15
点赞 关注

回复
举报

67

帖子

3

TA的资源

一粒金砂(中级)

沙发
 
楼主可以试试我开源的轻量级 C 日志库 EasyLogger:
链接已隐藏,如需查看请登录或者注册
,不仅仅支持按级别过滤日志,还支持按标签、关键词过滤。

点评

如果可能的话移植到raw-os的vs版本模拟中,这样有更多的人能学习到。 http://www.raw-os.org/download.html  详情 回复 发表于 2016-7-14 10:14
 
 

回复

420

帖子

0

TA的资源

纯净的硅(初级)

板凳
 
armink 发表于 2016-7-14 08:15
楼主可以试试我开源的轻量级 C 日志库 EasyLogger:https://github.com/armink/EasyLogger,不仅仅支持按级 ...

如果可能的话移植到raw-os的vs版本模拟中,这样有更多的人能学习到。
http://www.raw-os.org/download.html
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表