91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

關于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

灵山县| 丹东市| 高唐县| 达孜县| 临夏县| 松桃| 长岭县| 屏边| 台安县| 临邑县| 定陶县| 故城县| 札达县| 呼玛县| 和田市| 启东市| 泸定县| 馆陶县| 韶山市| 江川县| 柏乡县| 武平县| 兴安县| 苍溪县| 阜康市| 沙湾县| 涞源县| 本溪市| 台安县| 元氏县| 波密县| 滁州市| 长泰县| 清徐县| 延川县| 修武县| 肇源县| 阿拉尔市| 广元市| 衡水市| 阳东县|