第十章 嵌入式Linux的調(diào)試技術(shù) 學(xué)習(xí)心得
第10章嵌入式Linux的調(diào)試技術(shù)
心得體會
這一章主要概括的介紹了嵌入式Linux的調(diào)試技術(shù)的主要內(nèi)容。通過對第10章的學(xué)習(xí),使我對嵌入式Linux的調(diào)試技術(shù)的方法以及操作步驟有了一個基本的認(rèn)識。
一 調(diào)試前的準(zhǔn)備
在調(diào)試一個bug之前,我們所要做的準(zhǔn)備工作有:
有一個被確認(rèn)的bug。
包含這個bug的內(nèi)核版本號,需要分析出這個bug在哪一個版本被引入,這個對于解決問題有極大的幫助。可以采用二分查找法來逐步鎖定bug引入版本號。
對內(nèi)核代碼理解越深刻越好,同時還需要一點點運氣。
該bug可以復(fù)現(xiàn)。如果能夠找到復(fù)現(xiàn)規(guī)律,那么離找到問題的原因就不遠(yuǎn)了。
最小化系統(tǒng)。把可能產(chǎn)生bug的因素逐一排除掉。
二 內(nèi)核中的bug
內(nèi)核中的bug也是多種多樣的。它們的產(chǎn)生有無數(shù)的原因,同時表象也變化多端。從隱藏在源代碼中的錯誤到展現(xiàn)在目擊者面前的bug,其發(fā)作往往是一系列連鎖反應(yīng)的事件才可能出發(fā)的。雖然內(nèi)核調(diào)試有一定的困難,但是通過你的努力和理解,說不定你會喜歡上這樣的挑戰(zhàn)。
三 內(nèi)核調(diào)試配置選項
學(xué)習(xí)編寫驅(qū)動程序要構(gòu)建安裝自己的內(nèi)核(標(biāo)準(zhǔn)主線內(nèi)核)。最重要的原因之一是:內(nèi)核開發(fā)者已經(jīng)建立了多項用于調(diào)試的功能。但是由于這些功能會造成額外的輸出,并導(dǎo)致能下降,因此發(fā)行版廠商通常會禁止發(fā)行版內(nèi)核中的調(diào)試功能。
四 引發(fā)bug并打印信息
1 一些內(nèi)核調(diào)用可以用來方便標(biāo)記bug,提供斷言并輸出信息。最常用的兩個是BUG()和BUG_ON()。
2 dump_stack(),有些時候,只需要在終端上打印一下棧的回溯信息來幫助你調(diào)試。這時可以使用dump_stack()。
五 printk()
內(nèi)核提供的格式化打印函數(shù)。
六 內(nèi)存調(diào)試工具
1 MEMWATCH 2 YAMD 3 Electric Fence
七 strace
strace 命令是一種強(qiáng)大的工具,它能夠顯示所有由用戶空間程序發(fā)出的系統(tǒng)調(diào)用。
八 OOPS
OOPS(也稱 Panic)消息包含系統(tǒng)錯誤的細(xì)節(jié)…
九 KGDB
kgdb提供了一種使用 gdb調(diào)試 Linux 內(nèi)核的機(jī)制。使用KGDB可以象調(diào)試普通的應(yīng)用程序那樣,在內(nèi)核中進(jìn)行設(shè)置斷點、檢查變量值、單步跟蹤程序運行等操作。
http://www.rzrgm.cn/yun123456/
浙公網(wǎng)安備 33010602011771號