良许Linux教程网 干货合集 分享一款精小调试支持库:dbuglib

分享一款精小调试支持库:dbuglib

在嵌入式开发过程中,调试是一个非常重要的环节,它能帮助我们快速定位代码中的问题。为了实现这一目的,有许多方法可以使用。今天我将介绍一款高效的调试支持库:dbuglib。

说明

dbuglib是一款功能强大且体积小巧的静态日志记录库。内部的许多功能都是通过宏定义来实现的。这使得用户可以根据需要修改日志级别,以便过滤和记录特定级别的日志信息。

文件

  • ulog.h:定义了各种日志记录级别和日志记录宏
  • ulog.c:提供了内存打印等接口函数
  • ASSERT.h:提供了用户可定义的断言宏支持
  • VS文件夹:VC上位机测试示例
  • MDK文件夹:MDK下位机测试示例

日志级别

ulog支持5种日志记录级别,可在ulog.h文件中修改LOG_CFG_LEVE宏定义来定义日志的记录级别。

  • G_DEBUG:调试日志级别,用来记录最详细的调试信息和执行步骤
  • G_TRACE:跟踪日志级别,用来记录重要的跟踪信息
  • G_WARNG:警告日志级别,用来记录一些警告信息
  • G_ERROR:错误日志级别,用来记录严重的错误信息
  • G_NONE:不做任何日志记录

示例1:将LOG_CFG_LEVE配置为G_WARNG级别,则只会显示G_WAGNGG_ERROR两个级别的日志记录,其他的记录级别较低将不被显示 示例2:配置为G_NONE级别将禁用日志记录功能

定义日志记录样式

ulog.h文件中定义了LOG_FUN宏,用户可以对其修改来改变日志的打印样式

// 定义打印样式
#define LOG_FUN(LEVESTR,format, ...)       \
    LOG_PRINTF("["LEVESTR"] __FILE__": %d"">: " format "\r\n",__LINE__,##__VA_ARGS__)

使用方式

    ASSERT_MSG(0, "test");
    uLOG(G_DEBUG,"error:%d",123);
    uLOG_MEM(G_DEBUG, randbuff, 125, "error:%d",586);

打印数据如下:

[G_DEBUG] : error:123
[G_DEBUG] : error:586
00000000: 29 23 BE 84 E1 6C D6 AE 52 90 49 F1 F1 BB E9 EB  )#...l..R.I.....
00000010: B3 A6 DB 3C 87 0C 3E 99 24 5E 0D 1C 06 B7 47 DE  ...<..>.$^....G.
00000020: B3 12 4D C8 43 BB 8B A6 1F 03 5A 7D 09 38 25 1F  ..M.C.....Z}.8%.
00000030: 5D D4 CB FC 96 F5 45 3B 13 0D 89 0A 1C DB AE 32  ].....E;.......2
00000040: 20 9A 50 EE 40 78 36 FD 12 49 32 F6 9E 7D 49 DC   .P.@x6..I2..}I.
00000050: AD 4F 14 F2 44 40 66 D0 6B C4 30 B7 32 3B A1 22  .O..D@f.k.0.2;."
00000060: F6 22 91 9D E1 8B 1F DA B0 CA 99 02 B9 72 9D 49  ."...........r.I
00000070: 2C 80 7E C5 99 D5 E9 80 B2 EA C9 CC 53           ,.~.........S

以上为程序的使用示例,说明如下:

  • uLOG:指定日志级别和相应的字符串,其支持printf类似的转移修饰符
  • uLOG_MEM:可打印指定的内存数据,同样需要指定日志级别,
  • ASSERT:该宏当参数为假时会停止程序,并打印显示当前导致断言的文件和行号
  • ASSERT_MSG:与ASSERT相同,只不过多了个字符串参数,可以显示一些信息。

移植

该库编写时使用了一些C99特性,所以编译器必须支持C99标准。已经在VS2015和MDK5.0中测试,均可正常工作。移植时必须定义LOG_PRINTF宏到实际的打印函数,还必须定义LOG_PUT_CHAR宏到实际的字符输出函数:

// 字符输出函数
#define LOG_PUT_CHAR(C) putchar(C)
// 日志记录接口
#define LOG_PRINTF(format, ...) printf(format, ##__VA_ARGS__)

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部