色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

匯總一些嵌入式打log的一些規則

麥克泰技術 ? 來源:嵌入式大雜燴 ? 2024-01-19 11:07 ? 次閱讀

在我們嵌入式開發中,打印日志是最常用的一種調試手段。合理地打印日志,可以幫助我們快速地分析問題。

本篇文章我們來匯總一些嵌入式打log的一些規則。

1、什么操作下加日志?

(1)錯誤處理

對于不能恢復的嚴重錯誤,日志內容應詳細到足以幫助定位問題,但同時不應該包含敏感信息。比如申請內存失敗時使用錯誤(Error)級別加上日志信息。

(2)一些關鍵性的操作

一些很關鍵地處理,無論是正常情況或者異常情況都要打印日志。比如wifi打開時要有對應的日志信息。

(3)系統的打開、關閉

記錄系統啟動和關閉過程中的關鍵步驟有助于分析系統初始化是否正確,或者系統是否正常關閉。

(4)性能監控

日志可以記錄系統運行的關鍵性能指標,如CPU和內存使用率、IO操作等,以便進行系統性能分析和優化。

(5)關鍵數據

一些關鍵數據需要打印,很多功能上的問題大多直接與數據進行掛鉤。

(6)通信日志

對于需要與外部設備或網絡通信嵌入式系統,記錄通信日志可以幫助分析和調試通信協議或數據交換的問題。

(7)記錄用戶行為

在需要分析用戶如何與嵌入式設備交互的情況下,記錄用戶行為的日志會非常有幫助。

(8)if、switch

分支判斷中,各執行分支需要加上對應的日志信息,可以幫助我們準確地知道程序執行的走向。

(9)程序崩潰時的信息

比如,Linxu下應用進程崩潰時的調用堆棧信息。

#include
#include
#include
#include

voidfunc0(void)
{
printf("Thisisfunc0
");
int*p=NULL;
*p=1234;
}

voidfunc1(void)
{
printf("Thisisfunc1
");
func0();
}

voidfunc2(void)
{
printf("Thisisfunc2
");
func1();
}

voiddump(intsigno)
{
void*array[100];
size_tsize;
char**strings;

size=backtrace(array,100);
strings=backtrace_symbols(array,size);

printf("Obtained%zdstacks.
",size);
for(inti=0;i
c4f0db78-b677-11ee-8b88-92fbcf53809c.png

2、功能模塊標簽

項目中肯定會劃分有多個模塊,可以給各個模塊標記一個模塊標簽字符串,包含在日志條目里。這樣我們就可以在日志文件里通過模塊標簽來篩選某個模塊的日志,提高我們定位問題的效率。

比如:

//app_wifi.c

#defineLOG_TAG"[wifi_module]"
#defineLOG_D(fmt,arg...)LOG_D_TAG(LOG_TAG,fmt,##arg)
LOG_D("hellowifimodule");

輸出:

[wifi_module]hellowifimodule

3、模塊日志開關

設置模塊日志開關,可以方便我們調試、分析問題時,縮小分析范圍。當我們的函數設計有多個功能函數模塊的時候,當某個模塊出現問題時,這個時候我們只是關心此模塊,那么可以先把其他模塊的日志功能關閉掉,只是打開關心模塊的日志。

如:

//module1.c
#include"module1.h"

#ifMODULE1_LOG_SWITCH
#defineLOG_MODULE1(fmt,args...)DBG_PRINTF(fmt,##args)
#else
#defineLOG_MODULE1(fmt,args...)
#endif

//module2.c
#include"module2.h"

#ifMODULE2_LOG_SWITCH
#defineLOG_MODULE2(fmt,args...)DBG_PRINTF(fmt,##args)
#else
#defineLOG_MODULE2(fmt,args...)
#endif

//config.h
#defineMODULE1_LOG_SWITCH0
#defineMODULE2_LOG_SWITCH1

4、時間戳

日志應包含時間戳,可以方便地查看某段代碼的執行時間、確定問題發生的具體時間。時間戳最好能精確到微秒/毫秒。

5、日志級別

使用不同的日志級別可以幫助篩選和控制輸出的信息量。

常見的日志級別包括:

錯誤(Error):程序無法運行或嚴重問題。

警告(Warning):可能的問題,程序可以繼續運行。

信息(Info):程序運行狀態信息。

調試(Debug):詳細的調試信息,包括變量值和程序流程。

詳細(Verbose):非常詳細的信息,用于深入調試。

6、格式統一

為了使日志易于閱讀,所有日志應保持一致的格式。

日志里常包含的固定信息有:

文件名

行號

時間日期/時間戳

函數名

模塊名稱

進程ID

線程ID

可根據需要進行組合。如:

[2024-01-1411:12:30.666][wifi_module][func:wifi_init]

7、過濾控制

使用日志動態過濾控制功能可以動態地調整日志地輸出,但前提是項目使用地日志組件具備這樣的能力。比如EasyLogger(https://github.com/armink/EasyLogger)。

c5022d74-b677-11ee-8b88-92fbcf53809c.png

8、Release/Debug開關

由于日志打印可能占用不少系統資源,應當注意其對性能的影響。在Release版本中,可能需要減少日志輸出或者去掉一些不必要的日志,需要一個開關來進行切換。

9、封裝日志接口

嵌入式中,日志的輸出大多數情況下會輸出到串口終端。但也有一些場景,需要把日志輸出到屏幕、網絡設備、定制化的上位機等場景。需要留出對應接口,方便靈活切換。






審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式開發
    +關注

    關注

    18

    文章

    1035

    瀏覽量

    47660
  • 上位機
    +關注

    關注

    27

    文章

    945

    瀏覽量

    54943
  • linxu
    +關注

    關注

    0

    文章

    7

    瀏覽量

    2573

原文標題:嵌入式中,日志調試法的一些規則!

文章出處:【微信號:麥克泰技術,微信公眾號:麥克泰技術】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    新手求教:推薦一些嵌入式的入門視頻

    如題,希望各位大俠推薦一些入門的嵌入式視頻,最好是打基礎的,真心求教
    發表于 05-18 20:23

    求教嵌入式和ARM的一些問題。

    搞定了51單片機,學校的其他專業課程又沒什么興趣,嵌入式系統下學期才有課,本來想深入學習一些別的單片機比如AVR什么的,但是后來想想還是想學嵌入式先。本人對編程還是很有信心的,但是嵌入式
    發表于 11-08 21:20

    梳理嵌入式Linux的一些知識

    前言這篇文章簡單我們來起梳理嵌入式Linux的一些知識,方便于一些想跟我樣想要由單片機進階到嵌入式
    發表于 11-04 07:33

    分享一些嵌入式方面的基礎知識

    同時更關鍵的是為了補齊一些嵌入式方面的基礎知識,做如下筆記,持續記錄:1.嵌入式系統基礎知識(1) 嵌入式系統組成嵌入式系統是:以應用為中心
    發表于 11-08 07:41

    介紹嵌入式系統的一些基礎知識

    本文主要介紹嵌入式系統的一些基礎知識,希望對各位有幫助。嵌入式系統基礎1、嵌入式系統的定義(1)定義:以應用為中心,以計算機技術為基礎,軟硬件可裁剪,適應應用系統對功能、可靠性、成本、
    發表于 12-21 07:32

    嵌入式一些日常小技巧分享

    雜記–算法學習日志+關于實驗室部門架構的思考+嵌入式一些日常小技巧分享算法學習日志因為從初中到現在直是學習嵌入式程序的開發和研究,并沒有在面向對象的程序上有很大的研究和進展,在近期發
    發表于 12-21 08:07

    起梳理嵌入式Linux的一些知識

    前言這篇文章簡單我們來起梳理嵌入式Linux的一些知識,方便于一些想跟我樣想要由單片機進階到嵌入式
    發表于 01-05 07:18

    PCB布板一些簡易常用規則

    PCB布板一些簡易常用規則   這幾天還是關注一些簡單入門的東西吧,主要介紹一些PCB中一些建議
    發表于 11-21 14:34 ?6637次閱讀

    解析嵌入式開發中的一些硬件相關概念

    嵌入式系統開發,經常要接觸硬件。做嵌入式開發對數字電路和模擬電路要有定的了解。這樣才能深入的研究下去。下面我們簡單的介紹嵌入式開發中的一些
    發表于 06-06 16:35 ?950次閱讀
    解析<b class='flag-5'>嵌入式</b>開發中的<b class='flag-5'>一些</b>硬件相關概念

    嵌入式系統安全將面臨的一些挑戰

    當我們試圖在較小的嵌入式系統中使用更多的功能時,它們的安全性常常被忽略。本文討論了過去的一些安全漏洞,并討論了嵌入式安全被忽略的原因。物聯網可以看作是個極好的機會,以
    發表于 10-23 15:19 ?773次閱讀

    嵌入式系統的一些基礎知識

    本文主要介紹嵌入式系統的一些基礎知識,希望對各位有幫助。
    的頭像 發表于 02-18 10:44 ?2476次閱讀

    嵌入式中的一些概念

    嵌入式中的一些概念嵌入式系統的概念什么是MCU、CPU、MPU、DSPMCUMPUDSP幾大MCU公司瑞薩電子(Renesas)恩智浦(NXP)+飛思卡爾(Freescale)(后者被前者收購)微芯
    發表于 10-19 18:33 ?8次下載
    <b class='flag-5'>嵌入式</b>中的<b class='flag-5'>一些</b>概念

    有關嵌入式系統的一些思考

    有關嵌入式系統的一些思考何為嵌入式?為何要嵌入式?難點在哪里?發展趨勢是什么?何為嵌入式?根據英國電氣工程師協會( U.K. Institu
    發表于 10-19 18:33 ?2次下載
    有關<b class='flag-5'>嵌入式</b>系統的<b class='flag-5'>一些</b>思考

    一些封裝中沒有串口,或者串口已經被用作其他用途,要如何輸出log

    一些封裝中沒有串口,或者串口已經被用作其他用途,要如何輸出log? 在一些封裝中,例如在裸機程序或者嵌入式系統中,因為種種原因,可能不存在串口可以用于輸出
    的頭像 發表于 10-31 14:37 ?555次閱讀

    列舉一些嵌入式Linux應用開發里經常使用的技巧和套路

    本篇文章,我們基于ELF 1S這款開發板,來列舉一些嵌入式Linux應用開發里面,經常使用到的開發技巧和套路。
    的頭像 發表于 11-14 10:44 ?503次閱讀
    列舉<b class='flag-5'>一些</b><b class='flag-5'>嵌入式</b>Linux應用開發里經常使用的技巧和套路
    主站蜘蛛池模板: 一个人的视频全免费在线观看www | 亚洲精品AV无码永久无码 | 美国一级大黄一片免费的网站 | 伸进同桌奶罩里摸她胸作文 | 九九热这里只有国产精品 | 日本一本免费线观看视频 | 泡妞高手在都市完整版视频免费 | 中国拍三a级的明星女 | 亚洲午夜久久久久中文字幕 | 快播电影网站大全 | 翘臀后进美女白嫩屁股视频 | 日韩人妻无码专区一本二本 | 男人插曲女人的叫声 | 97蜜桃网123| 好大快用力深一点h视频 | 宝贝你骚死哥了好爽 | 亚洲m男在线中文字幕 | 蜜桃传媒在线观看入口 | 就去色电影| 校花的奶好大好浪 | 伊人网久久网 | 手机在线播放成人亚洲影院电影 | 国产毛A片久久久久久无码 国产毛A片啊久久久久久A | fyeex性欧美人与曾 | 亚洲精品无码国产爽快A片百度 | 幼儿交1300部一区二区 | YELLOW视频直播在线观看高清 | 免费的黄直播 | 国产色综合色产在线视频 | 棉签和冰块怎么弄出牛奶视频 | 有人有片的观看免费视频 | 东京热百度影音 | 亚洲精品tv久久久久久久久久 | 日本高清免费一本视频在线观看 | 综合网伊人 | 爱穿丝袜的麻麻3d漫画免费 | 伦理片在线3348 | 亚洲午夜久久久精品影院 | 免费果冻传媒2021在线观看 | 久久永久免费视频 | 狠日狠干日曰射 |