關(guān)于linux和linux驅(qū)動程序解bug的技巧和思考方法

關(guān)于linux和linux驅(qū)動程序解bug的技巧和思考方法

解bug三步:
1)看log,看現(xiàn)象。
2)對比代碼分析過程,程序流程,線程、中斷、workqueue等各個獨(dú)立執(zhí)行體的交互
3)調(diào)試,加入log、驗(yàn)證。 光看代碼只能停留在理論上,一定要親手調(diào)試一下才真正知道。另外對比正常和異常時的行為和log區(qū)別,交叉試驗(yàn),才能發(fā)現(xiàn)問題的關(guān)鍵。注意各種調(diào)試嘗試,各種替換調(diào)試,即好的和壞的,好的A和好的C,好的A和壞的D,壞的B和好的C,壞的B和壞的D的交叉調(diào)試,才能知道問題所在。另外,需要先寫簡化代碼,驗(yàn)證簡化版本,再加入后面的功能。

梓潼網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)公司成立于2013年到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。

所有的crash、exception等都最終反映為cpu跳到異常處理程序,異常處理程序根據(jù)發(fā)生異常的地方,決定
1)如果在內(nèi)核棧,則調(diào)panic進(jìn)而回溯出內(nèi)核棧。如果看crash dump的log時,看到回溯棧前部分在異常代碼中,后部分才是發(fā)生異常的棧,(后部分可能還會出現(xiàn)一部分是中斷處理程序的棧,一部分是中斷處理程序所寄生的線程的棧)。
2)如果判定發(fā)生在用戶態(tài),則異常處理代碼僅給進(jìn)程發(fā)一個信號,然后切換為用戶態(tài)時,信號處理程序執(zhí)行時,由信號處理程序去回溯應(yīng)用棧,例如android 的native代碼的debuggerd和java的print callstack,所以用戶態(tài)棧由用戶代碼去回溯。內(nèi)核棧由內(nèi)核回溯。 回溯棧依賴于編譯器實(shí)現(xiàn)及DWARF等標(biāo)準(zhǔn)。

由于內(nèi)核棧最大只有8KB,所以編寫內(nèi)核函數(shù)時,需要注意函數(shù)局部變量不應(yīng)太大,例如char A[256];之類的,占用棧大多,會因?yàn)橐欢ǖ臈I疃葧r溢出。所以可以改用static靜態(tài)變量、或者全局變量、或者動態(tài)堆分配。

關(guān)于具體的寫linux驅(qū)動的方法、技巧和注意事項(xiàng),歡迎觀看我的《如何編寫linux設(shè)備驅(qū)動》的視頻:
https://edu.51cto.com/course/17132.html

另外我的相關(guān)培訓(xùn)視頻請看:
歡迎觀看我發(fā)布的各個課程: https://edu.51cto.com/lecturer/8896847.html

另外我的免費(fèi)的linux各種驅(qū)動開發(fā)課程如下:
https://edu.51cto.com/course/17138.html

我的新的更多優(yōu)惠的打包課程鏈接如下:
https://edu.51cto.com/sd/0a9d4

本文名稱:關(guān)于linux和linux驅(qū)動程序解bug的技巧和思考方法
轉(zhuǎn)載來源:http://muchs.cn/article16/iheedg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化網(wǎng)站導(dǎo)航網(wǎng)頁設(shè)計(jì)公司、虛擬主機(jī)、外貿(mào)建站、定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營