chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

分享嵌入式軟件調(diào)試方法和幾個工具

strongerHuang ? 來源:嵌入式大雜燴 ? 作者:雜燴君 ? 2022-11-09 10:49 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

我們常常說,軟件三分寫七分調(diào)。實(shí)際開發(fā)中,確實(shí)也是這樣子的。我工作這幾年了,對這體會也越來越深。每當(dāng)需求一下來,我代碼很快就可以寫完,但是,調(diào)試需要花很多時間。

這里需要明確的是, 調(diào)試的目的不僅僅是調(diào)通整個功能需求 。調(diào)通功能是最基本的要求,還需要進(jìn)行優(yōu)化、完善邏輯、完善異常處理。所以,需要非常長的時間。

記得畢業(yè)的時候參與的第一個項(xiàng)目,那個項(xiàng)目的硬件架構(gòu)相對一般產(chǎn)品來說會復(fù)雜一些:

71c51252-5fc5-11ed-8abf-dac502259ad0.png

我負(fù)責(zé)的部分就是D芯片的軟件。D芯片所做的事情就是跟產(chǎn)品功能比較相近的,當(dāng)時通過A發(fā)數(shù)據(jù),經(jīng)過B、C之后,再到D,產(chǎn)品功能表現(xiàn)得不正常。我當(dāng)時的 第一反應(yīng) 就是我負(fù)責(zé)得D芯片的邏輯可能出問題了。

A、B、C都是比較有經(jīng)驗(yàn)的工程師負(fù)責(zé)的,而且負(fù)責(zé)C的還是個組長級別的,大家也覺得應(yīng)該是我負(fù)責(zé)的D芯片的代碼出的問題,因?yàn)槲沂莻€剛畢業(yè)的新人,覺得問題出在我這里的概率比較大。

他們也沒有去查是不是他們的問題,每天就是來看看我是否有找到問題。花了幾天的時間,我最后才定位出來,是C芯片給我發(fā)的數(shù)據(jù)出問題了~

因?yàn)楫?dāng)時缺乏調(diào)試經(jīng)驗(yàn),所以沒能很快就定位出問題所在。要是現(xiàn)在的話,這種問題很快就能查出來的。因?yàn)楝F(xiàn)在積累了一些經(jīng)驗(yàn):

調(diào)試經(jīng)驗(yàn)

平時開發(fā)調(diào)試時,可能會有這么兩種情況:

  • 獨(dú)立開發(fā),自己調(diào)試

  • 協(xié)作開發(fā),聯(lián)合調(diào)試

1、獨(dú)立開發(fā)

一些小的項(xiàng)目,如果整個項(xiàng)目是我們自己開發(fā)的話,調(diào)試起來也比較方便,因?yàn)槭俏覀冏约洪_發(fā)的,所以會比較熟悉一些。

我的習(xí)慣是:分模塊來進(jìn)行開發(fā),每開發(fā)完一個模塊就先想辦法測一下這個模塊,沒問題了再集成到工程里。模塊初步開發(fā)、測試時,代碼可以隨意一些,調(diào)好了之后,再重新梳理、整理代碼,集成到工程里。

自測的方式:有一些代碼直接對應(yīng)著功能,直接測試看功能正不正常;有一些代碼可以通過log打印來看是否正常;有一些可能需要在線調(diào)試看看是否符合預(yù)期;有一些需要數(shù)據(jù)輸入的,可以自己模擬一些數(shù)據(jù)等。

2、協(xié)同開發(fā)

協(xié)同開發(fā)時,可能就比較麻煩一些。特別的,有時候甚至需要跨部門對接調(diào)試。

我的習(xí)慣是:先開發(fā)并自測自己的模塊;然后模擬對方,簡單地自測通信

自測自己模塊的方式如上面獨(dú)立開發(fā)一樣。我們模擬對方進(jìn)行測試時,需要考慮是不是需要花比較多的時間,如果需要花太多的時間的花就算了,等到聯(lián)調(diào)再一起調(diào)。

花時間較少的,可以自測通信的情況可能有如下三種:

  • 線程/進(jìn)程間通信。這應(yīng)該比較容易,模擬對方線程/進(jìn)程進(jìn)行收發(fā)測試。可以寫一些測試命令,比如發(fā)某個命令,觸發(fā)某條消息發(fā)送。
  • 板間通信,如串口通信??梢杂么谥帜M對方進(jìn)行測試,自己對照協(xié)議模擬一些協(xié)議數(shù)據(jù)進(jìn)行收發(fā)測試。
  • socket通信,如TCP通信。你負(fù)責(zé)客戶端,就模擬服務(wù)端;你負(fù)責(zé)服務(wù)端,就模擬客戶端。

當(dāng)然,協(xié)作開發(fā)也可以不自測通信,看個人習(xí)慣。

我模擬自測通信是為了對我自己的模塊的通信有一定的把控,聯(lián)調(diào)時出問題時,就可以比較快地指出對方的問題。當(dāng)然,這不是為了推鍋,而是為了能更好地分析、解決聯(lián)調(diào)問題。

比如,我最近的項(xiàng)目中,設(shè)備與手機(jī)APP對接。配網(wǎng)功能、設(shè)備于APP局域網(wǎng)內(nèi)通信功能。我負(fù)責(zé)設(shè)備端,設(shè)備端作為服務(wù)器;對方作為客戶端。

在與對方聯(lián)調(diào)前,我已經(jīng)寫了一個客戶端運(yùn)行于PC或設(shè)備上,模擬對方的手機(jī)APP,對我的模塊做了基本的自測,也測出了我的模塊的一些問題。

然后在與對方正式聯(lián)調(diào)時,出現(xiàn)的大多問題都在對方那邊,所以這時候我就可以幫助對方分析問題,提高了聯(lián)調(diào)效率。

上面分享了一些我的經(jīng)驗(yàn)及思路,下面看看一些具體的調(diào)試方法與調(diào)試工具:

調(diào)試方法

1、LOG

我在實(shí)際工作中,log打印調(diào)試解決了我大多數(shù)的問題,一般的問題,通過分析log都可以定位出問題所在。但是,打log也是有很多講究的,需要我們打印出有助于我們調(diào)試的信息。

比如:

  • log的格式

帶時間戳、函數(shù)名、行號等有助于分析問題的信息。比如:

[func:100]

當(dāng)然,實(shí)際中可能不只包含如上信息,根據(jù)需要添加。

  • 在一些判斷分支要加上log

這樣可以清楚地知道程序跑到分支判斷時的執(zhí)行流程。

  • 在一些大的操作的開始處,加上顯眼的log

可以清楚地知道某個操作開始的地方。

  • 業(yè)務(wù)邏輯模塊,可以加上特定的標(biāo)簽

比如統(tǒng)一的log的格式中加上特定標(biāo)簽,比如BUSINESS。如:

[BUSINESS][func:100]

因?yàn)闃I(yè)務(wù)邏輯一般是整個項(xiàng)目地最上層,其它模塊都是為它服務(wù)的。

我們看log的時候,通過編輯器搜索關(guān)鍵字 BUSINESS 就可以只列出業(yè)務(wù)邏輯相關(guān)的log,我們只要看這些log,就可以大致知道程序的運(yùn)行流程。

當(dāng)然,其它模塊也可以根據(jù)需要加上標(biāo)簽。

  • 控制log打印頻率

與數(shù)據(jù)打交道的模塊可能需要打印一些數(shù)據(jù)來分析源數(shù)據(jù)是否正常??梢陨晕⒌目刂拼蛴☆l率,盡可能在不影響數(shù)據(jù)分析的情況下打印盡可能少的log。

否則,一些log的文件動不動就幾百M(fèi)B,分析起來也很頭疼。特別的,log需要保存在flash上時,為了防止log爆滿flash,常常需要限制log文件的大小并做log滾動覆蓋,這時候無效log太多了可能就會覆蓋掉有效的log。

往期關(guān)于log調(diào)試相關(guān)的文章:

C語言、嵌入式中幾個非常實(shí)用的宏技巧

bug解決不了?使用日志法

分享一個極簡的log模塊!

嵌入式軟件打log的一些心得!

2、在線調(diào)試

在線調(diào)試,可以看到程序運(yùn)行的更多細(xì)節(jié)。基本的應(yīng)該都會吧。

GDB往期相關(guān)推文:

例說GDB調(diào)試

手把手教你使用VSCode + gdb + gdbserver調(diào)試ARM程序

GDB調(diào)試器的簡單使用(圖文)

關(guān)于keil的調(diào)試相關(guān)的內(nèi)容,推薦看一下我同事魚鷹寫的文章(公眾號:魚鷹談單片機(jī)),他對這方面研究得比較深。

3、其它調(diào)試工具

我們公眾號之前也分享了很多有用的調(diào)試相關(guān)的工具:

(1)VirtLCD

這是一個實(shí)用的LCD模擬器,手頭上暫時沒有LCD或者開發(fā)初期,需要頻繁下載程序,驗(yàn)證效果的時候,可以使用VirtLCD來提高我們的開發(fā)、調(diào)試效率。

VirtLCD的介紹及簡單使用:

實(shí)用 | 手頭上無LCD卻又急著開發(fā)UI?LCD模擬器了解一下~

(2)Wireshark

Wireshark 是一個網(wǎng)絡(luò)封包分析軟件。比如我們在調(diào)試socket通信的時候,可以使用Wireshark 監(jiān)控看看我們有沒有發(fā)送數(shù)據(jù)出去,或者有沒有收到對方發(fā)送的數(shù)據(jù)。

wireshark的介紹及簡單使用:

wireshark抓包工具的使用及分析

(3)VSPD

Virtual Serial Port Driver(VSPD)是一個虛擬串口軟件。虛擬串口軟件是一種模擬物理串行接口的軟件,它完全復(fù)制了硬件 COM 接口的功能,并且將被操作系統(tǒng)和串行應(yīng)用程序識別為真實(shí)端口

在編寫串口上位機(jī)時,需要進(jìn)行調(diào)試。一種方式是與下位機(jī)進(jìn)行通信進(jìn)行測試;另一種方式是借助虛擬串口軟件來進(jìn)行測試。

VSPD的介紹及簡單使用:

工具 | 虛擬串口軟件的使用分享

(4)LVGL GUI Guider

GUI Guider是恩智浦為LVGL開發(fā)了一個上位機(jī)GUI設(shè)計(jì)工具,可以通過拖放控件的方式設(shè)計(jì)LVGL GUI頁面,加速GUI的設(shè)計(jì)。

相關(guān)文章:

實(shí)用工具 | LVGL GUI-Guider的使用分享

基于vs2019的lvgl模擬器使用

lvgl最新版本在STM32上的移植使用

(5)Jlink+JScope

J-Scope 是 SEGGER 推出的波形顯示軟件,傻瓜式,簡單易上手。需要搭配 Jlink仿真器 (V9或V10)使用。

J-Scope的介紹及簡單使用:

J-Scope的介紹及簡單使用

(6)SEGGER_RTT

RTT全稱是Real Time Transmit(實(shí)時傳輸),是SEGGER 公司推出的,是搭配 Jlink仿真 (V9或V10)使用的一種調(diào)試手段。

SEGGER_RTT的介紹及簡單使用:

SEGGER_RTT的介紹及簡單使用

(7)CmBacktrace

CmBacktrace (Cortex Microcontroller Backtrace)是一款針對 ARM Cortex-M 系列 MCU 的錯誤代碼自動追蹤、定位,錯誤原因自動分析的開源庫。

CmBacktrace 的介紹及簡單使用:

CmBacktrace 的介紹及簡單使用

(8)VOFA+

VOFA+(伏特加)插件驅(qū)動的高自由度上位機(jī)。其是一款通用的數(shù)據(jù)調(diào)試工具,它讓圖形化調(diào)試變得像串口調(diào)試一樣簡單。通過打印字符串,或者發(fā)送十六進(jìn)制數(shù)字的方式,就能完成數(shù)據(jù)的可視化操作。

官網(wǎng):

https://www.vofa.plus/

VOFA+的介紹及簡單使用:

VOFA+的介紹及簡單使用

(9)QEMU

QEMU是一款知名的而且開源的模擬器(官網(wǎng):https://www.qemu.org/),它能在 X86 PC 上運(yùn)行能夠模擬 Arm、MIPS、RISC-V 等各種 CPU 和開發(fā)板,以及 網(wǎng)卡、聲卡、鍵盤、sdcard、emmc、usb等各種外設(shè)。

QEMU我還未使用過,之前轉(zhuǎn)載的一篇文章:

Linux利器:QEMU!用它模擬開發(fā)板能替代真開發(fā)板?

(10)Valgrind

Valgrind是一套Linux下,開放源代碼(GPL V2)的仿真調(diào)試工具的集合。

Valgrind的介紹及簡單使用:

工具 | Valgrind仿真調(diào)試工具的使用

(11)Bus hound

Bus hound是一款為了在pc電腦上進(jìn)行總線數(shù)據(jù)包監(jiān)控以及操控的開發(fā)工具。用來捕捉來自設(shè)備的協(xié)議包和輸入輸出操作,它是功能強(qiáng)大的總線協(xié)議分析器。

之前有與USB上位機(jī)聯(lián)調(diào),通過這個工具可以監(jiān)控上位機(jī)發(fā)出的數(shù)據(jù)是否正確。關(guān)于Bus hound的文章我們公眾號還沒有分享過,先占個坑,之后有機(jī)會再分享。

審核編輯 :李倩


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

    關(guān)注

    459

    文章

    52494

    瀏覽量

    440671
  • 模塊
    +關(guān)注

    關(guān)注

    7

    文章

    2788

    瀏覽量

    50360
  • 嵌入式
    +關(guān)注

    關(guān)注

    5150

    文章

    19665

    瀏覽量

    317452

原文標(biāo)題:分享嵌入式軟件調(diào)試方法和幾個工具

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    調(diào)試工具:Eclipse調(diào)試工具欄與窗口的深入分析

    摘要 :在嵌入式系統(tǒng)開發(fā)領(lǐng)域,高效的調(diào)試工具鏈對于項(xiàng)目的成功實(shí)施具有決定性意義。本文聚焦于 Eclipse 調(diào)試工具欄與窗口的功能特性,深入剖析其在嵌入式開發(fā)
    的頭像 發(fā)表于 07-07 11:32 ?142次閱讀
    <b class='flag-5'>調(diào)試工具</b>:Eclipse<b class='flag-5'>調(diào)試工具</b>欄與窗口的深入分析

    嵌入式軟件開發(fā)常用的軟件有哪些?

    文檔等非常方便,因?yàn)樗檎?,定位,彩色顯示等功能非常強(qiáng)大。開發(fā)人員會當(dāng)成源代碼閱讀工具使用。 4. Keil uVision5 Keil 5 軟件是一款功能強(qiáng)大的嵌入式系統(tǒng)開發(fā)工具
    發(fā)表于 07-03 17:06

    普源示波器MSO5074在嵌入式系統(tǒng)聯(lián)合調(diào)試中的高效實(shí)踐

    一、引言:嵌入式系統(tǒng)調(diào)試的挑戰(zhàn)與示波器的必要性 嵌入式系統(tǒng)作為核心控制單元廣泛應(yīng)用于汽車、醫(yī)療設(shè)備、工業(yè)自動化等領(lǐng)域,其開發(fā)涉及硬件設(shè)計(jì)、軟件編程及實(shí)時
    的頭像 發(fā)表于 06-20 13:45 ?169次閱讀
    普源示波器MSO5074在<b class='flag-5'>嵌入式</b>系統(tǒng)聯(lián)合<b class='flag-5'>調(diào)試</b>中的高效實(shí)踐

    如何成為一名嵌入式軟件工程師?

    RTOS的編程和使用對于提升嵌入式軟件的實(shí)時性和穩(wěn)定性至關(guān)重要。 開發(fā)環(huán)境:熟悉Keil、IAR、Eclipse等集成開發(fā)環(huán)境,以及JTAG、GDB等調(diào)試工具。 2)硬件接口與驅(qū)動開發(fā) 硬件接口
    發(fā)表于 04-15 14:37

    嵌入式軟件單元測試的必要性、核心方法工具深度解析

    一、為什么嵌入式軟件必須重視單元測試? ?嵌入式系統(tǒng)的特殊性? 在汽車 ECU、醫(yī)療設(shè)備控制器等場景中,軟件直接操控硬件,?單比特錯誤可能導(dǎo)致剎車失靈或呼吸機(jī)故障?。不同于 PC?
    的頭像 發(fā)表于 03-21 14:53 ?458次閱讀

    嵌入式軟件測試技術(shù)深度研究報(bào)告

    嵌入式軟件測試技術(shù)深度研究報(bào)告 ——基于winAMS的全生命周期質(zhì)量保障體系構(gòu)建 一、行業(yè)技術(shù)瓶頸與解決方案框架 2025年嵌入式軟件測試領(lǐng)域面臨兩大核心矛盾: ? 安全合規(guī)與開發(fā)效率
    的頭像 發(fā)表于 03-03 13:54 ?348次閱讀

    盤點(diǎn)工程師常用的嵌入式開發(fā)工具

    嵌入式開發(fā)涉及硬件與軟件的緊密結(jié)合,開發(fā)工具的選擇對效率和質(zhì)量至關(guān)重要。以下是嵌入式開發(fā)中常用的工具分類及代表性
    的頭像 發(fā)表于 02-07 10:06 ?2026次閱讀

    如何提高嵌入式代碼質(zhì)量?

    嵌入式代碼的質(zhì)量是至關(guān)重要的。本文將探討如何通過有效的開發(fā)方法工具來提高嵌入式代碼的質(zhì)量,以確保系統(tǒng)的可靠性和可維護(hù)性。 理解嵌入式
    發(fā)表于 01-15 10:48

    嵌入式工程師常用的開發(fā)工具有哪些?

    項(xiàng)目管理和調(diào)試。IAR Embedded Workbench 也是廣受歡迎的 IDE,具有出色的優(yōu)化能力和調(diào)試工具,能夠幫助工程師快速開發(fā)出高質(zhì)量的嵌入式軟件。 二、編譯器 編
    發(fā)表于 12-20 15:29

    嵌入式系統(tǒng)開發(fā)與硬件的關(guān)系 嵌入式系統(tǒng)開發(fā)常見問題解決

    系統(tǒng)開發(fā)與硬件關(guān)系的幾個關(guān)鍵點(diǎn): 硬件依賴性 :嵌入式系統(tǒng)的軟件必須能夠在特定的硬件上運(yùn)行,這包括處理器、內(nèi)存、輸入/輸出接口等。軟件必須能夠充分利用硬件的特性,同時繞過其限制。 資源
    的頭像 發(fā)表于 12-09 09:38 ?960次閱讀

    嵌入式學(xué)習(xí)建議

    對廣大渴望學(xué)習(xí)嵌入式系統(tǒng)的學(xué)子提出幾點(diǎn)基礎(chǔ)階段的學(xué)習(xí)建議: ①嵌入式系統(tǒng)軟件硬件密切相關(guān),一定要打好軟硬件基礎(chǔ)。其實(shí),只要找到正確的方法,加上努力,任何理工科學(xué)生,甚至非理工科學(xué)生,
    發(fā)表于 10-22 11:41

    EsDA,一站嵌入式軟件

    EsDA是一套面向工業(yè)智能物聯(lián)領(lǐng)域的嵌入式系統(tǒng)設(shè)計(jì)自動化工具集,包含實(shí)時操作系統(tǒng)AWorksLP、低代碼開發(fā)平臺AWStudio、資源管理平臺AXPI、跨平臺GUI引擎AWTK和云服務(wù)平臺ZWS
    的頭像 發(fā)表于 09-15 08:10 ?776次閱讀
    EsDA,一站<b class='flag-5'>式</b><b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b>

    嵌入式開發(fā)常用軟件有哪些?

    查看源代碼,注釋文檔等非常方便,因?yàn)樗檎?,定位,彩色顯示等功能非常強(qiáng)大。開發(fā)人員會當(dāng)成源代碼閱讀工具使用。 4.Keil uVision5 Keil 5 軟件是一款功能強(qiáng)大的嵌入式系統(tǒng)開發(fā)
    發(fā)表于 09-09 15:22

    嵌入式軟件開發(fā)與AI整合

    嵌入式軟件開發(fā)與AI整合是當(dāng)前技術(shù)發(fā)展的重要趨勢之一。隨著人工智能技術(shù)的快速發(fā)展,嵌入式系統(tǒng)越來越多地集成了AI算法,以實(shí)現(xiàn)更復(fù)雜的智能功能。以下是關(guān)于嵌入式
    的頭像 發(fā)表于 07-31 09:25 ?1363次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b>開發(fā)與AI整合

    聚焦嵌入式開發(fā)中的合規(guī)性工具、項(xiàng)目管理工具、版本迭代工具應(yīng)用

    ,就嵌入式開發(fā)與管理領(lǐng)域的最新趨勢、工具選擇以及DevSecOps實(shí)踐應(yīng)用等方面展開了深入探討。 本期對話龍智資深DevSecOps顧問徐晨暉, 分享嵌入式開發(fā)中的合規(guī)性工具、項(xiàng)目管理
    的頭像 發(fā)表于 07-29 15:15 ?1081次閱讀