2022-01-11 09:53:03|已瀏覽:2306次

一、問題復現
穩定復現問題才能正確的對問題進行定位、解決以及驗證。一般來說,越容易復現的問題越容易解決。
1.1 模擬復現條件
有的問題存在于特定的條件下,只需要模擬出現問題的條件即可復現。對于依賴外部輸入的條件,如果條件比較復雜難以模擬可以考慮程序里預設直接進入對應狀態。
1.2 提高相關任務執行頻率
例如某個任務長時間運行才出現異常則可以提高該任務的執行頻率。
1.3 增大測試樣本量
程序長時間運行后出現異常,問題難以復現,可以搭建測試環境多套設備同時進行測試。
二、問題定位
縮小排查范圍,確認引入問題的任務、函數、語句。
2.1 打印LOG
根據問題的現象,在抱有疑問的代碼處增加LOG輸出,以此來追蹤程序執行流程以及關鍵變量的值,觀察是否與預期相符。
2.2 在線調試
在線調試可以起到和打印LOG類似的作用,另外此方法特別適合排查程序崩潰類的BUG,當程序陷入異常中斷(HardFault,看門狗中斷等)的時候可以直接STOP查看call stack以及內核寄存器的值,快速定位問題點。
2.3 版本回退
使用版本管理工具時可以通過不斷回退版本并測試驗證來定位首次引入該問題的版本,之后可以圍繞該版本增改的代碼進行排查。
2.4 二分注釋
二分注釋即以類似二分查找法的方式注釋掉部分代碼,以此判斷問題是否由注釋掉的這部分代碼引起。
具體方法為將與問題不相干的部分代碼注釋掉一半,看問題是否解決,未解決則注釋另一半,如果解決則繼續將注釋范圍縮小一半,以此類推逐漸縮小問題的范圍。
三、回歸測試
問題解決后需要進行回歸測試,一方面確認問題是否不再復現,另一方面要確認修改不會引入其他問題。
四、經驗總結
總結本次問題產生的原因及解決問題的方法,思考類似問題今后如何防范,對相同平臺產品是否值得借鑒,做到舉一反三,從失敗中吸取經驗。
本文由培訓無憂網達內教育課程顧問老師整理發布,更多課程信息可關注嵌入式開發培訓或添加老師微信:15033336050注:尊重原創文章,轉載請注明出處和鏈接 http://www.hebeijilong.cn/news-id-14582.html 違者必究!部分文章來源于網絡由培訓無憂網編輯部人員整理發布,內容真實性請自行核實或聯系我們,了解更多相關資訊請關注嵌入式開發頻道查看更多,了解相關專業課程信息您可在線咨詢也可免費申請試課。關注官方微信了解更多:150 3333 6050