調(diào)試是每個開發(fā)人員都想避免的一項任務,但不幸的是,這是軟件開發(fā)的必然之舉。事實上,正如EDN的嵌入式研究所揭示的那樣,嵌入式開發(fā)項目平均花費超過其總體努力的20%用于單獨調(diào)試。當你的袖子卷起來并開始調(diào)試時,這里有一些提示可以幫助你。
提示1 -采取可控制的步驟
當一個bug進入嵌入式軟件時,開發(fā)人員的第一直覺往往是跳入代碼并啟動做出改變。但是,開發(fā)人員的方法通常是偶然的,幾乎是隨機的,而不是以受控制的方式進行更改。嵌入式軟件開發(fā)不是狂野西部。解決甚至最簡單的錯誤應該包括檢查可用數(shù)據(jù),評估它,假設最可能的原因,更新代碼,然后測試更新。如果變更沒有解決問題,新數(shù)據(jù)至少應該被曝光,這有助于重復該過程。
提示2 -增加斷言密度
ASSERT 宏是一個很棒的工具,可以在運行時返回錯誤消息斷言的條件是錯誤的。開發(fā)人員可以使用此宏來驗證其代碼中的假設是否成立。令人驚訝的是,許多開發(fā)人員沒有花時間將斷言放入他們的代碼中。代碼庫的 ASSERT 密度通常可能是長期和痛苦的調(diào)試會話之間的差異,也可能是失敗假設發(fā)生時的陷阱。 ASSERT 可以幫助開發(fā)人員立即發(fā)現(xiàn)錯誤或假設失敗。您的代碼庫的 ASSERT 密度是多少?
技巧3 -使用數(shù)據(jù)記錄器
有關軟件運行方式的信息是嵌入式軟件工程師在調(diào)試時可以擁有的最佳工具。擁有諸如任務開始和完成時的性能信息,是否被搶占以及類似的細節(jié)都是至關重要的。記錄所采取的操作是開發(fā)人員深入了解軟件行為的好方法。日志可以像RAM緩沖區(qū)一樣簡單,文件寫入外部閃存,也可以像傳輸?shù)竭h程位置的編碼數(shù)據(jù)一樣復雜。
技巧4 -使用高級斷點
開發(fā)人員熟悉使用IDE中可以打開的標準斷點,只需雙擊一個斷點即可代碼的左邊距。但是,許多IDE還具有更高級的斷點功能,這是開發(fā)人員很少使用的功能。高級斷點的一個示例是在變量達到某個值時設置要斷開的行。使用高級斷點可以大大減少調(diào)試時間,并且難以發(fā)現(xiàn)很容易發(fā)現(xiàn)錯誤。
提示5 -再次查看數(shù)據(jù)表
調(diào)試外圍設備可能特別困難。現(xiàn)代微控制器可以在設置單個外設時涉及許多寄存器,這些外設設置并不總是很明顯或有很好的記錄。更糟糕的是,有關如何正確設置外設的詳細信息通常并非都在一個數(shù)據(jù)表中。相反,信息的形式是“面包屑”,散布在家庭和外圍數(shù)據(jù)表中,有時甚至在應用筆記中。僅僅查看一個文檔是不夠的。當硬件行為不端時,您需要反復查看數(shù)據(jù)表。
提示6 -監(jiān)控調(diào)用堆棧
開發(fā)人員有時會質(zhì)疑他們?nèi)绾尾拍塬@得特定的代碼行。 IDE包含一個可以準確顯示該信息的調(diào)用堆棧窗口。調(diào)用堆棧顯示調(diào)用了哪些函數(shù)以及以什么順序調(diào)用,顯示對于跟蹤錯誤非常有用的信息。
提示7 -休息一下
調(diào)試可能是一項繁重的工作。深入研究軟件和硬件的運作可以為開發(fā)人員提供隧道視野。開發(fā)人員有時需要通過繼續(xù)執(zhí)行其他任務或休息來退后一步。通過散步或做一些放松的事情離開系統(tǒng)將允許潛意識在有意識的思維休息時處理解決方案,以便當再次開始查看代碼時,通常會有其他見解。
結論
無論是花費大量時間進行調(diào)試還是花費很少,事實上嵌入式軟件開發(fā)人員都無法避免。使用本文中的提示有助于使調(diào)試更成功,因此更加可口。
-
嵌入式
+關注
關注
5085文章
19137瀏覽量
305670 -
PCB打樣
+關注
關注
17文章
2968瀏覽量
21721 -
華強PCB
+關注
關注
8文章
1831瀏覽量
27779 -
華強pcb線路板打樣
+關注
關注
5文章
14629瀏覽量
43061
發(fā)布評論請先 登錄
相關推薦
評論