中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

關于linux和linux驅動程序解bug的技巧和思考方法

發布時間:2020-07-15 04:30:21 來源:網絡 閱讀:291 作者:GaoNeil 欄目:移動開發

關于linux和linux驅動程序解bug的技巧和思考方法

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

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

由于內核棧最大只有8KB,所以編寫內核函數時,需要注意函數局部變量不應太大,例如char A[256];之類的,占用棧大多,會因為一定的棧深度時溢出。所以可以改用static靜態變量、或者全局變量、或者動態堆分配。

關于具體的寫linux驅動的方法、技巧和注意事項,歡迎觀看我的《如何編寫linux設備驅動》的視頻:
https://edu.51cto.com/course/17132.html

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

另外我的免費的linux各種驅動開發課程如下:
https://edu.51cto.com/course/17138.html

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

竹山县| 通海县| 九龙县| 连平县| 敦煌市| 西贡区| 梁河县| 股票| 万山特区| 师宗县| 安龙县| 盐边县| 汨罗市| 衡水市| 澄江县| 阿鲁科尔沁旗| 长阳| 顺昌县| 本溪| 九江县| 句容市| 甘孜县| 房产| 定州市| 丹江口市| 习水县| 莫力| 唐海县| 南投县| 卓尼县| 刚察县| 屏东市| 板桥市| 扎囊县| 剑河县| 资中县| 池州市| 中宁县| 南雄市| 霍州市| 田阳县|