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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 嵌入式Linux Kernel錯誤跟蹤技術(shù)

          嵌入式Linux Kernel錯誤跟蹤技術(shù)

          作者: 時間:2013-10-23 來源:網(wǎng)絡(luò) 收藏

             //取得函數(shù)調(diào)用棧幀的內(nèi)容

          //填充的記錄頭部

          //將上面的循環(huán)中取得的信息保存到非易失性存儲器中

          write_to_nvram((void *)bt_nvram_ptr,bt_record_header,sizeof(bt_info_t));

          }

          3 驗證評估LCRT機制

          3.1 部署LCRT機制

          部署LCRT機制,使LCRT機制發(fā)揮作用前需要做的相關(guān)工作有:

          (1)針對目標(biāo)內(nèi)核編譯LCRT機制的內(nèi)核模塊部分;

          (2) 將LCRT機制的內(nèi)核模塊部分載入內(nèi)核。

          3.2 實驗結(jié)果

          為了實驗LCRT機制的作用效果,構(gòu)造一個會造成Linux的設(shè)備驅(qū)動模塊,記這個內(nèi)核驅(qū)動模塊為bugguy.ko,列出如下所示的bugguy.ko中會引起Linux的代碼如下所示:

          irqreturn_t my_timer_interrupt(int irq,void *dev_id,struct pt_regs* regs)

          {

          確認(rèn)硬件狀態(tài)并清除中斷狀態(tài)

          if(ujiffies > 5000) {

          void * ill_pointer=NULL;

            *(unsigned long *)ill_pointer=0;

          }

          else {

          ujiffies++;

             }

             return IRQ_HANDLED;

          }

          說明:用黑體標(biāo)出的代碼即為產(chǎn)生bug的代碼

          從上面的代碼可以看出,這個錯誤是對空指針進(jìn)行解析而造成的。在一個中斷處理函數(shù)中如果發(fā)生對空指針的解析,將會引起Linux內(nèi)核的崩潰。在部署完成LCRT機制的嵌入式linux系統(tǒng)上將這個bugguy.ko載入Linux內(nèi)核,使得會引起Linux的中斷處理程序得以運行,LCRT機制可以將相關(guān)的信息保存到非易失性存儲器中,在系統(tǒng)復(fù)位后,通過LCRT機制的用戶空間工具,可以將保存的信息讀取出來。實驗結(jié)果顯示,可以得到如圖2所示的函數(shù)調(diào)用鏈信息。
          嵌入式Linux Kernel錯誤跟蹤技術(shù)
          圖2標(biāo)注即為會引起Linux內(nèi)核崩潰的錯誤代碼的中斷處理函數(shù)即真正引起系統(tǒng)宕機的“罪魁禍?zhǔn)住?。而記錄下的所有信息僅僅占用了不到1KB的存儲空間,寫入非易失性存儲器所耗用的時間控制在50ms以內(nèi)。在使用少量空間和少量時間的情況下,所記錄下的信息對于查找問題和解決問題都有較大的幫助。

          實驗結(jié)果表明,在LCRT機制的作用下,可以快速地定位到嵌入式Linux系統(tǒng)中隱藏的可能會導(dǎo)致系統(tǒng)宕機的軟件缺陷。這就為后續(xù)的故障解決和軟件完善提供了關(guān)鍵的輔助信息。對嵌入式Linux內(nèi)核而言,即是為提高Linux內(nèi)核的穩(wěn)定性和可靠性提供了幫助。

          在基于ARM的嵌入式Linux應(yīng)用中,開發(fā)LCRT機制來記錄系統(tǒng)內(nèi)核發(fā)生崩潰時引起崩潰的函數(shù)調(diào)用鏈和棧信息到非易失性存儲器中,截至目前為止,LCRT機制可以記錄基于ARM的嵌入式Linux內(nèi)核發(fā)生崩潰時的函數(shù)調(diào)用鏈信息,可直接得到函數(shù)名稱、函數(shù)調(diào)用鏈中單個函數(shù)被調(diào)用時的參數(shù)信息以及函數(shù)調(diào)用鏈中的函數(shù)各自的棧幀信息。這些記錄下來的信息對于完善和發(fā)展基于ARM的嵌入式Linux應(yīng)用具有重要的輔助意義。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          上一頁 1 2 3 下一頁

          評論


          相關(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); })();