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

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

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

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

匯總一些嵌入式打log的一些規(guī)則

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

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

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

1、什么操作下加日志?

(1)錯誤處理

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

(2)一些關(guān)鍵性的操作

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

(3)系統(tǒng)的打開、關(guān)閉

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

(4)性能監(jiān)控

日志可以記錄系統(tǒng)運行的關(guān)鍵性能指標,如CPU和內(nèi)存使用率、IO操作等,以便進行系統(tǒng)性能分析和優(yōu)化。

(5)關(guān)鍵數(shù)據(jù)

一些關(guān)鍵數(shù)據(jù)需要打印,很多功能上的問題大多直接與數(shù)據(jù)進行掛鉤。

(6)通信日志

對于需要與外部設(shè)備或網(wǎng)絡(luò)通信嵌入式系統(tǒng),記錄通信日志可以幫助分析和調(diào)試通信協(xié)議或數(shù)據(jù)交換的問題。

(7)記錄用戶行為

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

(8)if、switch

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

(9)程序崩潰時的信息

比如,Linxu下應(yīng)用進程崩潰時的調(diào)用堆棧信息。

#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、模塊日志開關(guān)

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

如:

//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、時間戳

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

5、日志級別

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

常見的日志級別包括:

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

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

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

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

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

6、格式統(tǒng)一

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

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

文件名

行號

時間日期/時間戳

函數(shù)名

模塊名稱

進程ID

線程ID

可根據(jù)需要進行組合。如:

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

7、過濾控制

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

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

8、Release/Debug開關(guān)

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

9、封裝日志接口

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






審核編輯:劉清

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

    關(guān)注

    18

    文章

    1028

    瀏覽量

    47564
  • 上位機
    +關(guān)注

    關(guān)注

    27

    文章

    941

    瀏覽量

    54792
  • linxu
    +關(guān)注

    關(guān)注

    0

    文章

    7

    瀏覽量

    2550

原文標題:嵌入式中,日志調(diào)試法的一些規(guī)則!

文章出處:【微信號:麥克泰技術(shù),微信公眾號:麥克泰技術(shù)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

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

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

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

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

    梳理嵌入式Linux的一些知識

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

    分享一些嵌入式方面的基礎(chǔ)知識

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

    介紹嵌入式系統(tǒng)的一些基礎(chǔ)知識

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

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

    雜記–算法學習日志+關(guān)于實驗室部門架構(gòu)的思考+嵌入式一些日常小技巧分享算法學習日志因為從初中到現(xiàn)在直是學習嵌入式程序的開發(fā)和研究,并沒有在面向?qū)ο蟮某绦蛏嫌泻艽蟮难芯亢瓦M展,在近期發(fā)
    發(fā)表于 12-21 08:07

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

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

    PCB布板一些簡易常用規(guī)則

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

    解析嵌入式開發(fā)中的一些硬件相關(guān)概念

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

    嵌入式系統(tǒng)安全將面臨的一些挑戰(zhàn)

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

    嵌入式系統(tǒng)的一些基礎(chǔ)知識

    本文主要介紹嵌入式系統(tǒng)的一些基礎(chǔ)知識,希望對各位有幫助。
    的頭像 發(fā)表于 02-18 10:44 ?2392次閱讀

    嵌入式中的一些概念

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

    有關(guān)嵌入式系統(tǒng)的一些思考

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

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

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

    列舉一些嵌入式Linux應(yīng)用開發(fā)里經(jīng)常使用的技巧和套路

    本篇文章,我們基于ELF 1S這款開發(fā)板,來列舉一些嵌入式Linux應(yīng)用開發(fā)里面,經(jīng)常使用到的開發(fā)技巧和套路。
    的頭像 發(fā)表于 11-14 10:44 ?476次閱讀
    列舉<b class='flag-5'>一些</b><b class='flag-5'>嵌入式</b>Linux應(yīng)用開發(fā)里經(jīng)常使用的技巧和套路
    主站蜘蛛池模板: 午夜视频体内射.COM.COM| 男女亲吻摸下面吃奶视频| 韩剧甜性涩爱| 久久秋霞理伦片| 蜜桃色欲AV久久无码精品| 欧洲-级毛片内射八十老太婆| 青青伊人精品| 色宅男看片午夜大片免费看| 无码任你躁久久久久久老妇双奶| 亚洲成人一区二区| 最近免费中文字幕大全免费 | 99精品AV无码一区二区| 成人免费视频在| 国产精品一区二区免费| 久久亚洲午夜牛牛影视| 琪琪电影午夜理论片77网| 我解开了岳的乳第一个女人 | 国产欧美日韩亚洲第一页| 久久国产精品麻豆AV影视| 女人18毛片| 亚洲h视频在线观看| 91九色麻豆| 国产精品香蕉视频在线| 美女靠逼漫画| 无人区免费一二三四乱码| 2020最新国产自产精品| 国产嫩草影院精品免费网址| 男人的天堂色| 亚洲精品天堂自在久久77| yellow片高清视频免费看| 久久re6热在线视频| 翁用力的抽插| 超h高h肉h文教室生理课| 久久综久久美利坚合众国| 亚洲 欧美 中文 日韩 视频| 99精品欧美一区二区三区美图| 国内精品人妻无码久久久影院蜜桃| 人妻夜夜爽天天爽三区麻豆AV网站 | 国内精品久久人妻无码HD浪潮| 日本人六九视频| 99久久综合|