<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)程序調(diào)試黑皮書

          單片機(jī)程序調(diào)試黑皮書

          作者: 時(shí)間:2012-08-06 來源:網(wǎng)絡(luò) 收藏

          1、程序的確定性比硬件大,不要害怕程序問題。
          2、寫程序,最重要的不是學(xué)會(huì)某種語言,而是會(huì)分析問題并提出解決問題的方法。
          3、含有的程序較為復(fù)雜,需要編寫者清楚同一時(shí)刻,我在做什么,其他人在做什么,用“并發(fā)”的方式思考問題,才能寫好。
          4、程序模塊化是為了編寫而不是為了運(yùn)行,模塊化和函數(shù)是兩個(gè)不同的概念,函數(shù)是為了將需要多次使用的代碼統(tǒng)一編寫,以便減少程序代碼量,便于維護(hù);模塊化是指將復(fù)雜的程序功能化整為零而成的功能塊,一個(gè)模塊可能由多個(gè)函數(shù)組成,也可能就是一個(gè)函數(shù),還有可能只是一段緊密相連的代碼塊。
          模塊---打開冰箱門
          1、抬起右手,移動(dòng)到冰箱門把中心右側(cè)1cm處
          2、彎曲右手手指,構(gòu)筑冰箱門
          3、以2kg的力量向后拉
          4、完成
          5、好的模塊化設(shè)計(jì),模塊間的接口簡單明了??偟膩碚f,好看好改的程序就是好程序。
          6、編寫程序的好習(xí)慣是分模塊編寫,邊寫邊測(cè)試,在通過測(cè)試的模塊基礎(chǔ)上編寫下一個(gè)模塊,可以減少程序出現(xiàn)問題的可能性,快速排除與問題相關(guān)的模塊并定位到程序語句。
          7、注釋不是程序,但可以幫助編寫者提高邊寫的可能性,也可以大大提高程序的可維護(hù)性。建議C語言程序注釋到函數(shù),一些重要的操作至少要注釋;匯編語言程序,至少注釋70%的語句行,建議一行一注。
          8、程序有BUG是很正常的,要學(xué)會(huì)找BUG的方法。
          9、故障分軟硬,軟故障最難找。軟故障多源于設(shè)計(jì)臨界所導(dǎo)致,在一定出發(fā)條件下發(fā)生,當(dāng)條件破壞時(shí),故障可能消失得無影無蹤。
          軟故障的誤導(dǎo)性來源于對(duì)硬故障的經(jīng)驗(yàn)積累。硬故障因?yàn)闊o需出發(fā)條件,人們往往用
          嘗試---判斷--再嘗試
          10、軟件和硬件密不可分,查找問題時(shí)要兩者兵種,不可死認(rèn)一方。
          11、Debug高手和新手間的區(qū)別,高手知道該如何去找,而新手會(huì)迷茫。
          12、平時(shí)就要注意積累。學(xué)習(xí)軟硬件只是,還要熟悉自己的實(shí)際應(yīng)用,包括應(yīng)用條件,否則會(huì)對(duì)放在面前,對(duì)推理極有價(jià)值的關(guān)鍵現(xiàn)象視而不見。找BUG可以用“猜” 的方法,但是“猜”完了要推理到所有的現(xiàn)象上去“驗(yàn)證”。所以我們說“懷疑---否定---再懷疑---再否定,直到找到真理所在”,前面的“嘗試--- 判斷---再嘗試”是找BUG的基本方法。
          13、在BUG面前,新手和高手初始化狀態(tài)是一樣的,只是高手有意識(shí)去找現(xiàn)象用于分析,新手看著現(xiàn)象發(fā)呆罷了。
          14、論據(jù)有兩種獲得方式---尋找和傻等,高手以尋找為主,新手以傻等為主。
          15、隨機(jī)對(duì)隨機(jī)的方式是一種在查找小概率軟故障時(shí)用得極端確認(rèn)方法,需要使用者對(duì)故障的基本特征熟練掌握,明確“小概率事件很少發(fā)生”的原理。
          16、當(dāng)一個(gè)系統(tǒng)由若干個(gè)部分組成時(shí),尋找故障的時(shí)候可以將懷疑引起故障的部分更換到其他系統(tǒng)上,通過觀察故障現(xiàn)象是否隨該部分遷移來判斷BUG所在。
          17、將精力集中在需要查找的部分,排除其他模塊的影響,用最簡單的方法去判斷,這就是模塊隔離法的價(jià)值所在。
          18、發(fā)生時(shí)間相關(guān)性BUG,其分開測(cè)試正確,合并測(cè)試出錯(cuò)的特性往往讓初學(xué)者抓狂,在調(diào)試含有的程序時(shí),一定要多條思路,懷疑程序的時(shí)間相關(guān)性。
          19、因?yàn)橹挥性趯?shí)際運(yùn)行時(shí)才會(huì)表現(xiàn)出來,時(shí)間相關(guān)性BUG比較難于查找,這也就是我們建議程序在實(shí)際環(huán)境中調(diào)試,而不是仿真環(huán)境下調(diào)試的原因之一,遵守基本規(guī)則編寫程序是避免時(shí)間相關(guān)性BUG說呢之所有BUG的根源。多觀察現(xiàn)象,積累判斷依據(jù)是找時(shí)間相關(guān)性BUG的法寶。

          以上為教程網(wǎng)http://www.51hei.com 站長huqin在多年程序開發(fā)中總結(jié)的一些經(jīng)驗(yàn),雖然寫程序很累,只要我們不斷的積累經(jīng)驗(yàn)不斷的學(xué)習(xí),樂趣自然在其中,當(dāng)我們開發(fā)成功一個(gè)產(chǎn)品我想得到的不僅僅是一個(gè)產(chǎn)品,還有自豪和滿足吧.程序員是一個(gè)有激情的工作,希望我們都能繼續(xù)寫下去.



          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();