1. gzyueqian
      13352868059

      嵌入式開(kāi)發(fā):最小化調(diào)試時(shí)間的5個(gè)策略

      更新時(shí)間: 2022-08-19 09:36:01來(lái)源: 粵嵌教育瀏覽量:8627

        如果你在嵌入式系統(tǒng)行業(yè)花時(shí)間開(kāi)發(fā)一個(gè)產(chǎn)品或者一個(gè)DIY項(xiàng)目,你就會(huì)知道很多時(shí)間都花在了調(diào)試上。嵌入式開(kāi)發(fā)人員花費(fèi)多達(dá)50%甚至更多的時(shí)間調(diào)試他們的應(yīng)用程序代碼并不罕見(jiàn)!有很多策略可以幫助你減少調(diào)試時(shí)間。讓我們來(lái)探索五種策略,你可以用它們來(lái)減少你花在調(diào)試上的時(shí)間。

        策略 1 —— 不要從一開(kāi)始就將bug放在代碼中

        如果你不在你的軟件中放入bug,你就不必花時(shí)間去移除它們。減少調(diào)試時(shí)間的第一個(gè)方法是不要在代碼中放入bug!

        當(dāng)然,將bug排除在代碼之外是具有挑戰(zhàn)性的。你不能把它們都排除在外,但是你可以盡量減少進(jìn)入代碼的數(shù)量。最小化bug從擁有合理的、可追蹤的需求開(kāi)始。如果開(kāi)發(fā)人員知道他們正在構(gòu)建什么以及它應(yīng)該如何表現(xiàn),那么創(chuàng)建這些特性就更容易了。

        了解你的需求并鎖定它們會(huì)有所幫助,但這不是保證。開(kāi)發(fā)人員需要定義良好的流程來(lái)防止錯(cuò)誤。如果一個(gè)bug真的出現(xiàn)了,我們希望能盡快捕捉到它們。如果我只是添加了一行代碼,然后發(fā)現(xiàn)我破壞了系統(tǒng),我知道應(yīng)該查看哪一行代碼。

        也許第一個(gè)策略可以表述得更清楚:“開(kāi)發(fā)流程和紀(jì)律,以避免將錯(cuò)誤注入代碼”。

        策略2 —— 使用測(cè)試驅(qū)動(dòng)的開(kāi)發(fā)

        測(cè)試驅(qū)動(dòng)開(kāi)發(fā)是敏捷運(yùn)動(dòng)中產(chǎn)生的一項(xiàng)令人興奮的技術(shù)。核心思想是,在嵌入式開(kāi)發(fā)人員編寫(xiě)任何生產(chǎn)代碼之前,編寫(xiě)一個(gè)測(cè)試,使它失敗,然后編寫(xiě)生產(chǎn)代碼,使它通過(guò)。然后這個(gè)過(guò)程無(wú)限重復(fù)。

        擁有一個(gè)我們證明失敗了并且能夠檢測(cè)到失敗的測(cè)試是一個(gè)有效的調(diào)試工具。隨著每個(gè)測(cè)試的創(chuàng)建,我們可以重新運(yùn)行舊的測(cè)試。如果我們的新代碼破壞了某些東西,測(cè)試就會(huì)失敗,并直接指向我們破壞的東西。在這一點(diǎn)上,我們知道我們剛剛寫(xiě)了什么代碼破壞了它,我們破壞了什么。顯而易見(jiàn),在這些情況下,我們應(yīng)該能夠顯著減少調(diào)試時(shí)間。事實(shí)上,調(diào)試大大減少。

        測(cè)試驅(qū)動(dòng)開(kāi)發(fā)可以應(yīng)用于嵌入式系統(tǒng)。可以用它來(lái)測(cè)試從底層硬件中分離出來(lái)的應(yīng)用程序代碼。通過(guò)解耦,你可以輕松地注入數(shù)據(jù)、探測(cè)結(jié)果,并驗(yàn)證代碼是否按預(yù)期工作。測(cè)試驅(qū)動(dòng)開(kāi)發(fā)也可以用于底層驅(qū)動(dòng)和中間件開(kāi)發(fā)。由于編程周期的原因,這要慢得多。然而,這可能是一個(gè)很好的方式來(lái)建立和證明驅(qū)動(dòng)程序在各種條件下工作。最終結(jié)果是我們花在調(diào)試上的時(shí)間更少了。

        

        策略 3 —— 使用仿真器

        仿真器和模擬器在減少調(diào)試時(shí)間方面非常有用。由于對(duì)嵌入式目標(biāo)進(jìn)行編程所涉及的編程周期,調(diào)試時(shí)間通常會(huì)增加。仿真器或模擬器可以在主機(jī)環(huán)境中執(zhí)行,無(wú)需對(duì)嵌入式目標(biāo)進(jìn)行編程。結(jié)果是嵌入式開(kāi)發(fā)人員可以快速迭代、測(cè)試和調(diào)試他們的代碼。

        策略4——跟蹤你的應(yīng)用程序代碼

        跟蹤技術(shù)對(duì)于理解嵌入式系統(tǒng)的幫助非常大。跟蹤工具,例如 Percepio 的 Tracealyzer,可以幫助你了解代碼時(shí)序、CPU 利用率、狀態(tài)等等。例如,當(dāng)系統(tǒng)開(kāi)始出現(xiàn)異常行為時(shí),開(kāi)發(fā)人員通常會(huì)跳入其中并隨機(jī)四處尋找問(wèn)題可能出在哪里。使用跟蹤工具,開(kāi)發(fā)人員可以可視化隨時(shí)間推移執(zhí)行的內(nèi)容,并查看它們是否達(dá)到了諸如優(yōu)先級(jí)反轉(zhuǎn)、任務(wù)匱乏或其他問(wèn)題之類(lèi)的瓶頸。

        開(kāi)發(fā)人員可以利用許多跟蹤技術(shù),例如Arm Cortex -M處理器上的串行線查看器。在這些跟蹤接口上,開(kāi)發(fā)人員可以發(fā)送調(diào)試信息,從而最大限度地減少實(shí)時(shí)交互,并幫助更快地找到問(wèn)題的根源。

        策略5–了解CPU寄存器和指令集

        開(kāi)發(fā)人員偶爾會(huì)遇到超級(jí)bug。突然出現(xiàn)的bug會(huì)導(dǎo)致硬故障或其他災(zāi)難性的行為。該bug可能是由于堆棧溢出或指針不正常,并試圖在不存在的內(nèi)存區(qū)域執(zhí)行代碼造成的。當(dāng)這種情況發(fā)生時(shí),開(kāi)發(fā)人員通常必須卷起袖子,深入研究微控制器硬件。理解CPU、外設(shè)寄存器和指令集對(duì)于解決這些棘手的問(wèn)題至關(guān)重要。

        結(jié)論

        開(kāi)發(fā)人員永遠(yuǎn)不會(huì)實(shí)現(xiàn)沒(méi)有bug的軟件。我們今天設(shè)計(jì)和建造的系統(tǒng)太復(fù)雜了,但這并不意味著我們沒(méi)有可以用來(lái)減少調(diào)試時(shí)間的策略和工具。正如我們?cè)谶@篇文章中所看到的,我們可以建立適當(dāng)?shù)某绦騺?lái)防止大多數(shù)bug進(jìn)入軟件。盡管如此,當(dāng)他們這樣做時(shí),嵌入式開(kāi)發(fā)人員可以使用測(cè)試驅(qū)動(dòng)的開(kāi)發(fā)、跟蹤、模擬器和其他技術(shù)來(lái)幫助我們最大限度地減少調(diào)試時(shí)間。

      免費(fèi)預(yù)約試聽(tīng)課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 亚洲一区精品动漫 | 亚洲综合婷婷六月日韩 | 最新成免费人久久精品 | 伊人久久中文大香线蕉综合 | 亚洲欧美日韩在线观看蜜桃 | 婷婷在线免费公开视频 |