0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

分享一款精小調(diào)試支持庫(kù):dbuglib

嵌入式與Linux那些事 ? 來(lái)源:嵌入式與Linux那些事 ? 2023-04-17 14:01 ? 次閱讀

嵌入式開(kāi)發(fā)過(guò)程中,調(diào)試是必不可少的一個(gè)環(huán)節(jié)。怎樣調(diào)試才能快速定位代碼的問(wèn)題呢?方法有很多,今天給大家分享一款精小調(diào)試支持庫(kù):dbuglib.

概述

ulog日志記錄庫(kù)是一個(gè)精小的靜態(tài)日志記錄庫(kù)。內(nèi)部很多功能均由宏定義來(lái)實(shí)現(xiàn)。用戶可以修改日志的級(jí)別用于過(guò)濾特定級(jí)別的日志。

文件

ulog.h:定義了各種日志記錄級(jí)別和日志記錄宏

ulog.c:提供了內(nèi)存打印等接口函數(shù)

ASSERT.h:提供了用戶可定義的斷言宏支持

VS文件夾:VC上位機(jī)測(cè)試示例

MDK文件夾:MDK下位機(jī)測(cè)試示例

日志級(jí)別

ulog支持5種日志記錄級(jí)別,可在ulog.h文件中修改LOG_CFG_LEVE宏定義來(lái)定義日志的記錄級(jí)別。

G_DEBUG:調(diào)試日志級(jí)別,用來(lái)記錄最詳細(xì)的調(diào)試信息和執(zhí)行步驟

G_TRACE:跟蹤日志級(jí)別,用來(lái)記錄重要的跟蹤信息

G_WARNG:警告日志級(jí)別,用來(lái)記錄一些警告信息

G_ERROR:錯(cuò)誤日志級(jí)別,用來(lái)記錄嚴(yán)重的錯(cuò)誤信息

G_NONE:不做任何日志記錄

示例1:將LOG_CFG_LEVE配置為G_WARNG級(jí)別,則只會(huì)顯示G_WAGNG和G_ERROR兩個(gè)級(jí)別的日志記錄,其他的記錄級(jí)別較低將不被顯示 示例2:配置為G_NONE級(jí)別將禁用日志記錄功能

定義日志記錄樣式

在ulog.h文件中定義了LOG_FUN宏,用戶可以對(duì)其修改來(lái)改變?nèi)罩镜拇蛴邮?/p>

// 定義打印樣式
#define LOG_FUN(LEVESTR,format, ...)       
    LOG_PRINTF("["LEVESTR"] <"__FILE__": %d"">: " format "
",__LINE__,##__VA_ARGS__)

使用方式

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

打印數(shù)據(jù)如下:

[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

以上為程序的使用示例,說(shuō)明如下:

uLOG:指定日志級(jí)別和相應(yīng)的字符串,其支持printf類似的轉(zhuǎn)移修飾符

uLOG_MEM:可打印指定的內(nèi)存數(shù)據(jù),同樣需要指定日志級(jí)別,

ASSERT:該宏當(dāng)參數(shù)為假時(shí)會(huì)停止程序,并打印顯示當(dāng)前導(dǎo)致斷言的文件和行號(hào)

ASSERT_MSG:與ASSERT相同,只不過(guò)多了個(gè)字符串參數(shù),可以顯示一些信息。

移植

該庫(kù)編寫(xiě)時(shí)使用了一些C99特性,所以編譯器必須支持C99標(biāo)準(zhǔn)。已經(jīng)在VS2015和MDK5.0中測(cè)試,均可正常工作。移植時(shí)必須定義LOG_PRINTF宏到實(shí)際的打印函數(shù),還必須定義LOG_PUT_CHAR宏到實(shí)際的字符輸出函數(shù):

// 字符輸出函數(shù)
#define LOG_PUT_CHAR(C) putchar(C)
// 日志記錄接口
#define LOG_PRINTF(format, ...) printf(format, ##__VA_ARGS__)

開(kāi)源地址:

https://gitee.com/git-lib/dbugLib-Prj

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5082

    文章

    19126

    瀏覽量

    305243
  • 調(diào)試
    +關(guān)注

    關(guān)注

    7

    文章

    578

    瀏覽量

    33943
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4788

    瀏覽量

    68616
  • 上位機(jī)
    +關(guān)注

    關(guān)注

    27

    文章

    942

    瀏覽量

    54815
  • 日志
    +關(guān)注

    關(guān)注

    0

    文章

    138

    瀏覽量

    10643

原文標(biāo)題:分享一款精小調(diào)試支持庫(kù):dbuglib

文章出處:【微信號(hào):嵌入式與Linux那些事,微信公眾號(hào):嵌入式與Linux那些事】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    一款基于幀捕捉的開(kāi)源圖形調(diào)試器應(yīng)用設(shè)計(jì)

    支持,并且也支持 PVRTC壓縮格式。 RenderDoC是什么? RenderDoc是一款基于幀捕捉的開(kāi)源圖形調(diào)試器,它遵從MIT協(xié)議,涵蓋了
    的頭像 發(fā)表于 04-03 09:13 ?8294次閱讀
    <b class='flag-5'>一款</b>基于幀捕捉的開(kāi)源圖形<b class='flag-5'>調(diào)試</b>器應(yīng)用設(shè)計(jì)

    一款可以顯示曲線的WIFI調(diào)試助手

    一款可以顯示曲線的WIFI調(diào)試助手
    發(fā)表于 08-26 16:34

    一款支持Lua編程的RTOS

    單片機(jī)開(kāi)源項(xiàng)目開(kāi)源逆變器wolfBoot 開(kāi)源的安全啟動(dòng)bootloaderOpenBLT 開(kāi)源的bootloaderRTOSLua-RTOS-ESP32是一款支持Lua編程的RTOS,目前支持ESP32,ESP8266和PIC
    發(fā)表于 08-06 07:20

    一款基于Java實(shí)現(xiàn)的小巧而強(qiáng)大的關(guān)系型數(shù)據(jù)庫(kù)

    H2 是一款基于 Java 實(shí)現(xiàn)的小巧而強(qiáng)大的關(guān)系型數(shù)據(jù)庫(kù),支持嵌入式、客戶端/服務(wù)器以及混合部署模式。H2 數(shù)據(jù)庫(kù)適合嵌入小型應(yīng)用程序、元數(shù)據(jù)管理、快速應(yīng)用開(kāi)發(fā)和測(cè)試、內(nèi)存數(shù)據(jù)
    發(fā)表于 10-27 06:12

    用最新LL庫(kù)開(kāi)發(fā)一款IOT產(chǎn)品記錄

    最近使用STm32G031K6做一款IOT產(chǎn)品,選擇了用最新LL庫(kù)進(jìn)行開(kāi)發(fā),因?yàn)橹淠菍?duì)LL庫(kù)了解很少,所以開(kāi)始的時(shí)候踩了很多坑,為防以后繼續(xù)踩坑,現(xiàn)在做個(gè)記錄。GPIO初始化:vo
    發(fā)表于 01-26 07:39

    一款好用的串口調(diào)試軟件ComMonitor

    電子發(fā)燒友網(wǎng)站提供《一款好用的串口調(diào)試軟件ComMonitor.exe》資料免費(fèi)下載
    發(fā)表于 07-09 11:19 ?22次下載

    NetAssist_一款較為方便的TCP/UPD調(diào)試助手

    一款較為方便的TCP/UPD調(diào)試助手,能夠后順利進(jìn)行TCP/UDP協(xié)議的調(diào)試以及數(shù)據(jù)的傳送。
    發(fā)表于 02-22 18:12 ?51次下載

    一款支持LORA-4G的智慧盒子

    一款支持LORA-4G的智慧盒子
    發(fā)表于 05-08 10:21 ?26次下載

    一款超級(jí)好用的數(shù)據(jù)庫(kù)客戶端工具

    作者:atzuge 鏈接:https://www.cnblogs.com/zuge/p/7397255.html 最近被同事案例了一款數(shù)據(jù)庫(kù)客戶端工具:DataGrip,大愛(ài)! 其實(shí),這個(gè)標(biāo)題的話
    的頭像 發(fā)表于 08-25 16:03 ?2469次閱讀

    H2:一款基于 Java 的嵌入式關(guān)系型數(shù)據(jù)庫(kù)

    H2 是一款基于 Java 實(shí)現(xiàn)的小巧而強(qiáng)大的關(guān)系型數(shù)據(jù)庫(kù),支持嵌入式、客戶端/服務(wù)器以及混合部署模式。H2 數(shù)據(jù)庫(kù)適合嵌入小型應(yīng)用程序、元數(shù)據(jù)管理、快速應(yīng)用開(kāi)發(fā)和測(cè)試、內(nèi)存數(shù)據(jù)
    發(fā)表于 10-20 19:06 ?1次下載
    H2:<b class='flag-5'>一款</b>基于 Java 的嵌入式關(guān)系型數(shù)據(jù)<b class='flag-5'>庫(kù)</b>

    一款支持Sparkplug協(xié)議的MQTT網(wǎng)關(guān)

    一款支持Sparkplug協(xié)議的物聯(lián)網(wǎng)網(wǎng)關(guān)
    發(fā)表于 01-25 10:49 ?957次閱讀
    <b class='flag-5'>一款</b><b class='flag-5'>支持</b>Sparkplug協(xié)議的MQTT網(wǎng)關(guān)

    一款支持多種不同配置的banime40鍵盤(pán)

    電子發(fā)燒友網(wǎng)站提供《一款支持多種不同配置的banime40鍵盤(pán).zip》資料免費(fèi)下載
    發(fā)表于 07-11 14:25 ?0次下載
    <b class='flag-5'>一款</b><b class='flag-5'>支持</b>多種不同配置的banime40鍵盤(pán)

    一款支持WiFi的體重秤

    電子發(fā)燒友網(wǎng)站提供《一款支持WiFi的體重秤.zip》資料免費(fèi)下載
    發(fā)表于 02-08 09:43 ?1次下載
    <b class='flag-5'>一款</b><b class='flag-5'>支持</b>WiFi的體重秤

    一款專業(yè)且全面的嵌入式開(kāi)發(fā)調(diào)試工具

    不知道大家平時(shí)做嵌入式開(kāi)發(fā)時(shí)用調(diào)試工具進(jìn)行調(diào)試,今天給大家分享一款專業(yè)且全面的嵌入式調(diào)試工具集:Micro-Lab。
    的頭像 發(fā)表于 04-15 14:10 ?1204次閱讀

    一款數(shù)據(jù)庫(kù)自動(dòng)化提權(quán)工具

    一款用Go語(yǔ)言編寫(xiě)的數(shù)據(jù)庫(kù)自動(dòng)化提權(quán)工具,支持Mysql、MSSQL、Postgresql、Oracle、Redis數(shù)據(jù)庫(kù)提權(quán)、命令執(zhí)行、爆破以及ssh連接等等功能。
    的頭像 發(fā)表于 07-19 14:57 ?707次閱讀
    <b class='flag-5'>一款數(shù)據(jù)庫(kù)</b>自動(dòng)化提權(quán)工具