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

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

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

調(diào)試嵌入式軟件的7個(gè)小技巧

PCB線路板打樣 ? 來(lái)源:LONG ? 2019-08-12 10:17 ? 次閱讀

調(diào)試是每個(gè)開(kāi)發(fā)人員都想避免的一項(xiàng)任務(wù),但不幸的是,這是軟件開(kāi)發(fā)的必然之舉。事實(shí)上,正如EDN的嵌入式研究所揭示的那樣,嵌入式開(kāi)發(fā)項(xiàng)目平均花費(fèi)超過(guò)其總體努力的20%用于單獨(dú)調(diào)試。當(dāng)你的袖子卷起來(lái)并開(kāi)始調(diào)試時(shí),這里有一些提示可以幫助你。

提示1 -采取可控制的步驟

當(dāng)一個(gè)bug進(jìn)入嵌入式軟件時(shí),開(kāi)發(fā)人員的第一直覺(jué)往往是跳入代碼并啟動(dòng)做出改變。但是,開(kāi)發(fā)人員的方法通常是偶然的,幾乎是隨機(jī)的,而不是以受控制的方式進(jìn)行更改。嵌入式軟件開(kāi)發(fā)不是狂野西部。解決甚至最簡(jiǎn)單的錯(cuò)誤應(yīng)該包括檢查可用數(shù)據(jù),評(píng)估它,假設(shè)最可能的原因,更新代碼,然后測(cè)試更新。如果變更沒(méi)有解決問(wèn)題,新數(shù)據(jù)至少應(yīng)該被曝光,這有助于重復(fù)該過(guò)程。

提示2 -增加斷言密度

ASSERT 宏是一個(gè)很棒的工具,可以在運(yùn)行時(shí)返回錯(cuò)誤消息斷言的條件是錯(cuò)誤的。開(kāi)發(fā)人員可以使用此宏來(lái)驗(yàn)證其代碼中的假設(shè)是否成立。令人驚訝的是,許多開(kāi)發(fā)人員沒(méi)有花時(shí)間將斷言放入他們的代碼中。代碼庫(kù)的 ASSERT 密度通??赡苁情L(zhǎng)期和痛苦的調(diào)試會(huì)話之間的差異,也可能是失敗假設(shè)發(fā)生時(shí)的陷阱。 ASSERT 可以幫助開(kāi)發(fā)人員立即發(fā)現(xiàn)錯(cuò)誤或假設(shè)失敗。您的代碼庫(kù)的 ASSERT 密度是多少?

技巧3 -使用數(shù)據(jù)記錄器

有關(guān)軟件運(yùn)行方式的信息是嵌入式軟件工程師在調(diào)試時(shí)可以擁有的最佳工具。擁有諸如任務(wù)開(kāi)始和完成時(shí)的性能信息,是否被搶占以及類似的細(xì)節(jié)都是至關(guān)重要的。記錄所采取的操作是開(kāi)發(fā)人員深入了解軟件行為的好方法。日志可以像RAM緩沖區(qū)一樣簡(jiǎn)單,文件寫入外部閃存,也可以像傳輸?shù)竭h(yuǎn)程位置的編碼數(shù)據(jù)一樣復(fù)雜。

技巧4 -使用高級(jí)斷點(diǎn)

開(kāi)發(fā)人員熟悉使用IDE中可以打開(kāi)的標(biāo)準(zhǔn)斷點(diǎn),只需雙擊一個(gè)斷點(diǎn)即可代碼的左邊距。但是,許多IDE還具有更高級(jí)的斷點(diǎn)功能,這是開(kāi)發(fā)人員很少使用的功能。高級(jí)斷點(diǎn)的一個(gè)示例是在變量達(dá)到某個(gè)值時(shí)設(shè)置要斷開(kāi)的行。使用高級(jí)斷點(diǎn)可以大大減少調(diào)試時(shí)間,并且難以發(fā)現(xiàn)很容易發(fā)現(xiàn)錯(cuò)誤。

提示5 -再次查看數(shù)據(jù)表

調(diào)試外圍設(shè)備可能特別困難。現(xiàn)代微控制器可以在設(shè)置單個(gè)外設(shè)時(shí)涉及許多寄存器,這些外設(shè)設(shè)置并不總是很明顯或有很好的記錄。更糟糕的是,有關(guān)如何正確設(shè)置外設(shè)的詳細(xì)信息通常并非都在一個(gè)數(shù)據(jù)表中。相反,信息的形式是“面包屑”,散布在家庭和外圍數(shù)據(jù)表中,有時(shí)甚至在應(yīng)用筆記中。僅僅查看一個(gè)文檔是不夠的。當(dāng)硬件行為不端時(shí),您需要反復(fù)查看數(shù)據(jù)表。

提示6 -監(jiān)控調(diào)用堆棧

開(kāi)發(fā)人員有時(shí)會(huì)質(zhì)疑他們?nèi)绾尾拍塬@得特定的代碼行。 IDE包含一個(gè)可以準(zhǔn)確顯示該信息的調(diào)用堆棧窗口。調(diào)用堆棧顯示調(diào)用了哪些函數(shù)以及以什么順序調(diào)用,顯示對(duì)于跟蹤錯(cuò)誤非常有用的信息。

提示7 -休息一下

調(diào)試可能是一項(xiàng)繁重的工作。深入研究軟件和硬件的運(yùn)作可以為開(kāi)發(fā)人員提供隧道視野。開(kāi)發(fā)人員有時(shí)需要通過(guò)繼續(xù)執(zhí)行其他任務(wù)或休息來(lái)退后一步。通過(guò)散步或做一些放松的事情離開(kāi)系統(tǒng)將允許潛意識(shí)在有意識(shí)的思維休息時(shí)處理解決方案,以便當(dāng)再次開(kāi)始查看代碼時(shí),通常會(huì)有其他見(jiàn)解。

結(jié)論

無(wú)論是花費(fèi)大量時(shí)間進(jìn)行調(diào)試還是花費(fèi)很少,事實(shí)上嵌入式軟件開(kāi)發(fā)人員都無(wú)法避免。使用本文中的提示有助于使調(diào)試更成功,因此更加可口。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(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)注

    5087

    文章

    19155

    瀏覽量

    306433
  • PCB打樣
    +關(guān)注

    關(guān)注

    17

    文章

    2968

    瀏覽量

    21760
  • 華強(qiáng)PCB
    +關(guān)注

    關(guān)注

    8

    文章

    1831

    瀏覽量

    27848
  • 華強(qiáng)pcb線路板打樣

    關(guān)注

    5

    文章

    14629

    瀏覽量

    43109
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    加速調(diào)試嵌入式軟件的五個(gè)技巧

    調(diào)試嵌入式軟件是我最不喜歡的行為,不幸地是,它卻是必要的。值得慶幸地是,技術(shù)和工具鏈創(chuàng)新的進(jìn)步衍生出大量的新技術(shù),從而大大地加快了調(diào)試過(guò)程。下面讓我們來(lái)看看其中一些方法,從傳統(tǒng)的斷點(diǎn)
    發(fā)表于 06-04 01:46 ?1957次閱讀

    集成嵌入式平臺(tái)加速了SoC和嵌入式系統(tǒng)的軟件調(diào)試和啟動(dòng)

      這種跨學(xué)科的早期研究改進(jìn)了設(shè)計(jì)硬件并加速了 SoC 和嵌入式系統(tǒng)的軟件調(diào)試和啟動(dòng)。軟件開(kāi)發(fā)人員和硬件工程師都同意這是朝著正確方向邁出的一步。
    的頭像 發(fā)表于 06-28 15:31 ?2541次閱讀
    集成<b class='flag-5'>嵌入式</b>平臺(tái)加速了SoC和<b class='flag-5'>嵌入式</b>系統(tǒng)的<b class='flag-5'>軟件</b><b class='flag-5'>調(diào)試</b>和啟動(dòng)

    嵌入式系統(tǒng)的調(diào)試技巧

    調(diào)試與設(shè)計(jì)一樣是嵌入式系統(tǒng)不可或缺的一部分。兩者都可以正確地稱為同一枚硬幣的兩個(gè)面。考慮到物聯(lián)網(wǎng)領(lǐng)域嵌入式系統(tǒng)的最新發(fā)展,工程師在調(diào)試和設(shè)計(jì)
    發(fā)表于 07-21 12:08 ?2223次閱讀
    <b class='flag-5'>嵌入式</b>系統(tǒng)的<b class='flag-5'>調(diào)試</b>技巧

    嵌入式硬件調(diào)試軟件調(diào)試

    時(shí)可能僅僅只需要調(diào)試嵌入式應(yīng)用程序就可以了。在嵌入式系統(tǒng)的整個(gè)開(kāi)發(fā)過(guò)程中,不同層次上的軟件調(diào)試需要使用不同的
    發(fā)表于 03-10 10:44

    在VIM中如何實(shí)現(xiàn)對(duì)嵌入式軟件調(diào)試?

    gdb對(duì)嵌入式軟件調(diào)試模式有哪幾種?在VIM中如何實(shí)現(xiàn)對(duì)嵌入式軟件調(diào)試?
    發(fā)表于 04-27 06:04

    基于ARM的嵌入式系統(tǒng)軟件設(shè)計(jì)

    嵌入式軟件的啟動(dòng)代碼嵌入式軟件開(kāi)發(fā)關(guān)鍵技術(shù)嵌入式實(shí)時(shí)操作系統(tǒng)程序的鏈接定位軟件
    發(fā)表于 03-25 15:03 ?203次下載
    基于ARM的<b class='flag-5'>嵌入式</b>系統(tǒng)<b class='flag-5'>軟件</b>設(shè)計(jì)

    嵌入式系統(tǒng)軟件開(kāi)發(fā)環(huán)境中調(diào)試器的設(shè)計(jì)

    調(diào)試軟件開(kāi)發(fā)流程中是一個(gè)比較重要的環(huán)節(jié),調(diào)試器是衡量一個(gè)軟件開(kāi)發(fā)環(huán)境優(yōu)劣的重要因素.本文對(duì)
    發(fā)表于 05-30 13:51 ?29次下載

    嵌入式遠(yuǎn)程調(diào)試工具的研究與實(shí)現(xiàn)

             在嵌入式軟件開(kāi)發(fā)中,調(diào)試是一個(gè)重要的環(huán)節(jié),調(diào)試
    發(fā)表于 09-11 09:48 ?16次下載

    嵌入式系統(tǒng)的遠(yuǎn)程調(diào)試

      1 基本方法   圖1(a)是傳統(tǒng)的嵌入式調(diào)試方法:主機(jī)PC通過(guò)串口與從機(jī)嵌入式系統(tǒng)相連,接收從嵌入式系統(tǒng)發(fā)來(lái)的調(diào)試信息并向
    發(fā)表于 08-30 10:23 ?1041次閱讀
    <b class='flag-5'>嵌入式</b>系統(tǒng)的遠(yuǎn)程<b class='flag-5'>調(diào)試</b>

    嵌入式軟件的打印調(diào)試信息的方法

    在我們的嵌入式開(kāi)發(fā)中,常常把printf重定向到MCU的串口外設(shè),再配合上位機(jī)界面軟件,通過(guò)打印調(diào)試信息的方式來(lái)調(diào)試我們的嵌入式
    的頭像 發(fā)表于 04-04 17:35 ?3302次閱讀

    嵌入式軟件是什么意思_嵌入式軟件的分類有哪些

    本文首先闡述了嵌入式軟件的概念,其次介紹了嵌入式軟件的特征,最后介紹了嵌入式軟件的分類。
    發(fā)表于 08-31 15:54 ?1.6w次閱讀

    嵌入式軟件的開(kāi)發(fā)流程_嵌入式軟件調(diào)試

    本文首先介紹了嵌入式軟件的發(fā)展,其次闡述了嵌入式軟件的開(kāi)發(fā)流程,最后介紹了嵌入式軟件
    發(fā)表于 08-31 16:02 ?6344次閱讀

    如何實(shí)現(xiàn)嵌入式系統(tǒng)遠(yuǎn)程調(diào)試

    嵌入式系統(tǒng)隨著目前科技的發(fā)展,正逐步融入人們的生活中。對(duì)于嵌入式系統(tǒng),我們應(yīng)該有所了解。就專業(yè)人員而言,他們對(duì)嵌入式系統(tǒng)早已駕輕就熟。為增進(jìn)大家對(duì)嵌入式系統(tǒng)的認(rèn)識(shí),本文將對(duì)
    的頭像 發(fā)表于 11-22 11:55 ?5393次閱讀
    如何實(shí)現(xiàn)<b class='flag-5'>嵌入式</b>系統(tǒng)遠(yuǎn)程<b class='flag-5'>調(diào)試</b>

    嵌入式系統(tǒng)設(shè)計(jì)師學(xué)習(xí)筆記二十六:嵌入式軟件程序設(shè)計(jì)①——嵌入式應(yīng)用開(kāi)發(fā)的過(guò)程

    嵌入式系統(tǒng)設(shè)計(jì)師學(xué)習(xí)筆記二十六:嵌入式軟件程序設(shè)計(jì)①——嵌入式應(yīng)用開(kāi)發(fā)的過(guò)程一個(gè)嵌入式應(yīng)用項(xiàng)目的
    發(fā)表于 11-04 10:06 ?18次下載
    <b class='flag-5'>嵌入式</b>系統(tǒng)設(shè)計(jì)師學(xué)習(xí)筆記二十六:<b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b>程序設(shè)計(jì)①——<b class='flag-5'>嵌入式</b>應(yīng)用開(kāi)發(fā)的過(guò)程

    如何更快調(diào)試嵌入式軟件,試試這五個(gè)技巧!

    調(diào)試嵌入式軟件是我最不喜歡的行為,不幸地是,它卻是必要的。值得慶幸地是,技術(shù)和工具鏈創(chuàng)新的進(jìn)步衍生出大量的新技術(shù),從而大大地加快了調(diào)試過(guò)程。下面讓我們來(lái)看看其中一些方法,從傳統(tǒng)的斷點(diǎn)
    發(fā)表于 02-08 17:03 ?2次下載
    如何更快<b class='flag-5'>調(diào)試</b><b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b>,試試這五<b class='flag-5'>個(gè)</b>技巧!