成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

減少嵌入式軟件調試時間的三個技巧

開發(fā) 前端
我們在開發(fā)階段可能會花費大量時間調試嵌入式軟件代碼。 有時調試時間是不可避免的; 但在許多情況下,開發(fā)人員可能會花費超出預期更多的時間。 我們已經探索了幾個您可以進一步調查的領域,以減少您和您的團隊花費在調試上的時間。

?工程師喜歡解決問題。當然,這就是我們的工作。但不如人愿的是,嵌入式軟件工程師最大的問題之一是我們自己制造了很多問題,然后花大量的時間來解決這些問題,最后使自己成為英雄(在調試上!)。有很多公司的嵌入式軟件工程師把20 - 40%的時間花在調試上。值得慶幸的是,從團隊的角度可以做出很多潛在的改變,以減少他們花在調試上的時間,并將時間百分比壓縮到個位數。在本文中,我們將研究一些減少調試時間的技巧。

技巧1-測試驅動開發(fā)(TDD)

測試驅動開發(fā)是一種允許開發(fā)人員增量地構建他們的產品軟件,并依賴測試來規(guī)定他們編寫代碼的技術。例如,開發(fā)人員首先編寫一個測試用例,如果測試失敗,則編寫以通過測試為目的新代碼。然后重復這個過程。

傳統(tǒng)上來講,嵌入式軟件開發(fā)人員會在測試之前編寫整個軟件代碼模塊。 可能會在幾周內編寫數千行代碼。 當到了測試代碼的時候,如果發(fā)現它不起作用,問題在哪里? 只有天知道! 開發(fā)人員必須煞費苦心地回顧代碼并發(fā)現問題所在并修復它。 執(zhí)行此操作所需的時間可能相當長。

另一方面,對于使用TDD的開發(fā)人員來說,如果出現了錯誤并且在代碼中注入了bug,測試用例將立即告訴開發(fā)人員!由于是逐步編寫代碼的流程,所以更有可能確切地知道更改了程序的什么部分,并且能夠立即修復問題。TDD似乎需要更多的時間來驗證,但通過創(chuàng)建一系列的測試用例,可以在回歸測試中運行這些用例,以確保一切都按照預期工作。TDD功能實現了一石二鳥的目的:減少調試和自動化測試的時間。

技巧2-盡可能無機器依賴的開發(fā)

當一個項目開始時,幾乎每個嵌入式軟件開發(fā)人員的第一反應就是獲得一塊開發(fā)板然后開始編寫代碼。 但不如人愿的是,在許多情況下嵌入式軟件代碼并不是和對手之間產品的差異化因素,差別在于應用程序代碼。 雖然許多應用程序代碼最終需要與硬件交互,但許多模塊可以不依賴于主機器環(huán)境來進行開發(fā)。

實施無機器依賴的代碼開發(fā),為開發(fā)人員提供了許多減少每個調試周期所花費時間的機會。 例如,通常要為目標微控制器編寫和測試代碼,開發(fā)人員必須做以下工作:

1.交叉編譯代碼

2.啟動調試會話

3.通過 SWD 對設備進行編程

4.在目標機器上運行代碼

5.通過在目標機上運行來驗證代碼是否有效(同樣的必須擁有所有Low-Level代碼)

如果代碼是在主機上開發(fā)的,開發(fā)人員必須在主機上編譯代碼,然后使用單元測試工具、仿真器或自定義程序來運行正在開發(fā)的代碼。 如果發(fā)現問題,會更加快速的修復、重新編譯并重新開始測試。

在嵌入式板子上,僅對目標程序進行編程就會使每個周期增加幾十秒,更不用說單步執(zhí)行代碼了。

無機器依賴的開發(fā)/調試可能會產生特定的錯誤。從我現在寫了大約 75% 的相關代碼的例子上來看,發(fā)現會有速度更快、效率更高的效果。 我可以快速定位代碼中的問題,確定原因并修復它,然后繼續(xù)調試,而不是只能在嵌入式板子上跟蹤問題。 當然,有些問題會出現在主機上不會出現的板子環(huán)境上。

技巧3-掌握調試策略

我們已知效率最低的調試方法就是單步調試代碼。 但不要誤會我的意思,有具體的程序運行時間和發(fā)生位置,往往更加會造成很多時間上的浪費。 不幸的是,嵌入式軟件開發(fā)人員通常默認使用斷點和單步調試的方案。 為了更好地調試,開發(fā)人員還需要掌握現代微控制器上可用的其他調試策略。

目前至少有八種不同的調試技術可供開發(fā)人員使用。 這些技術從最簡單到最復雜的順序排列如下:

  • Watch / Expressions:為開發(fā)人員提供檢查 CPU 和外設寄存器的能力。它們通常可用于監(jiān)視變量、執(zhí)行計算或在更改時停止 CPU。
  • 斷點:為開發(fā)人員提供在特定代碼行上停止 CPU 執(zhí)行的能力,高級斷點功能可用于設置條件語句的情況。
  • 打?。簽殚_發(fā)人員提供將字符數據打印到映射的串行接口的能力,有一定概率會影響實時性能。
  • 斷言:用于驗證程序中特定點假設的條件語句。斷言失敗通常會停止 CPU 并提供失敗斷言的文件和行位置。
  • 統(tǒng)計分析:對在運行中應用程序中的各種寄存器進行定期采樣。 通常不會影響實時性能。 例如,您可能想要對程序計數器 (PC) 進行采樣以了解正在執(zhí)行的代碼模塊。
  • 數據分析:對包含可變數據的各種內存位置進行定期采樣。當與實時可視化工具一起使用來監(jiān)控系統(tǒng)狀態(tài)、感興趣的變量變化等時,數據分析會非常有用。
  • 任務和數據跟蹤:使開發(fā)人員能夠跟蹤實時操作系統(tǒng)應用程序中的事件。因此,開發(fā)人員可以深入了解應用程序性能、任務延遲、運行時間等等。
  • 指令跟蹤:使開發(fā)人員能夠記錄在處理器上執(zhí)行的每條指令。這可用于了解測試期間的代碼覆蓋率、調試編譯器問題等。

掌握所有這些技術并知道何時使用它們,可以大大減少當異常發(fā)生進入系統(tǒng)時用于調試的時間。

結論?

我們在開發(fā)階段可能會花費大量時間調試嵌入式軟件代碼。 有時調試時間是不可避免的; 但在許多情況下,開發(fā)人員可能會花費超出預期更多的時間。 我們已經探索了幾個您可以進一步調查的領域,以減少您和您的團隊花費在調試上的時間。 如果您在調試上花費超過整體軟件周期的20%時間,那么請在本周花一個小時時間確定您在以上哪些方面可以立即調整優(yōu)化,以控制花在調試上的時間。

責任編輯:武曉燕 來源: Linux閱碼場
相關推薦

2022-03-11 15:44:11

嵌入式開發(fā)技巧技術

2023-01-27 23:46:36

嵌入式軟件技巧

2022-02-19 22:47:46

編程語言開發(fā)C++

2022-12-14 08:06:08

2023-01-04 09:37:16

2023-04-27 07:06:18

2011-04-18 11:34:34

嵌入式軟件測試

2018-07-10 09:47:11

Linux內核階段

2022-03-18 14:08:49

嵌入式開發(fā)技巧系統(tǒng)

2023-07-16 22:48:59

2023-05-04 00:27:40

2022-02-21 14:14:03

SSH加密密鑰

2022-05-02 17:52:53

Python編程語言

2018-05-02 09:18:17

Linux技巧嵌入式

2015-05-07 10:10:28

嵌入式設計軟件

2021-10-13 06:59:03

Python技巧編程

2011-05-13 18:04:45

軟件測試

2023-11-29 07:51:40

嵌入式軟件設計

2010-01-19 09:08:46

嵌入式Windows Emb

2018-04-08 16:26:48

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久久黄色 | 久久伊| 米奇7777狠狠狠狠视频 | 国产精品国产成人国产三级 | 久久久黑人 | 999www视频免费观看 | 欧美成人影院在线 | 欧美a级成人淫片免费看 | 欧美精品一区在线发布 | 免费人成激情视频在线观看冫 | 久久国产精品视频观看 | 一区二区三区视频在线免费观看 | 天天操天天干天天曰 | 久久er99热精品一区二区 | 国产精品久久久久久婷婷天堂 | 日韩有码一区 | 国产精品一区二区免费 | www.亚洲国产精品 | 日韩免费一区二区 | 精品九九| 国产精品久久久久久久久久三级 | 久久专区 | 99精品网站| 911影院| 国产精品久久久久久久久久久久久久 | 尤物视频在线免费观看 | 久久久久国产一区二区三区不卡 | 九九九视频 | 欧美区日韩区 | 99在线免费观看 | 国产小视频在线 | 国产精品久久久久久久久久三级 | 亚洲国产69 | 欧美区在线观看 | 久久99成人| 日韩欧美成人一区二区三区 | 日本成人中文字幕在线观看 | 精品视频一区二区 | 亚洲精品视频三区 | 91在线影院| www.888www看片|