<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

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

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

   //取得函數調用棧幀的內容

//填充的記錄頭部

//將上面的循環(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)針對目標內核編譯LCRT機制的內核模塊部分;

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

3.2 實(shí)驗結果

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

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

{

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

if(ujiffies > 5000) {

void * ill_pointer=NULL;

  *(unsigned long *)ill_pointer=0;

}

else {

ujiffies++;

   }

   return IRQ_HANDLED;

}

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

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

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

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

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

上一頁(yè) 1 2 3 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>