亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

恩平市| 和平县| 东平县| 新竹市| 扎囊县| 中牟县| 曲沃县| 永顺县| 房山区| 留坝县| 抚远县| 宾川县| 涞水县| 苗栗市| 阿巴嘎旗| 马关县| 密山市| 佛冈县| 屏边| 贵阳市| 洪雅县| 宝鸡市| 彭泽县| 鹤壁市| 祥云县| 兴业县| 金平| 宿迁市| 元谋县| 清远市| 固始县| 五大连池市| 宜州市| 玛纳斯县| 含山县| 澜沧| 龙江县| 夏津县| 台东县| 栾城县| 句容市|