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

溫馨提示×

溫馨提示×

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

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

Linux內核設備驅動之內核調試技術的示例分析

發布時間:2021-07-14 13:38:17 來源:億速云 閱讀:112 作者:小新 欄目:服務器

這篇文章主要介紹Linux內核設備驅動之內核調試技術的示例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

/******************
 * 內核的調試技術
 ******************/

(1)內核源代碼中的一些與調試相關的配置選項

內核的配置選項中包含了一些與內核調試相關的選項,都集中在"kernel hacking"菜單中。包括:

CONFIG_DEBUG_KERNEL

使其他的調試選項可用,應該選中,其本身不會打開所有的調試功能。

具體的調試選項說明可參見驅動一書,或通過menuconfig的help說明查看。

(2)如何通過宏對printk調試語句進行全局控制

通過和Makefile配合,可以在c文件中定義屬于我們自己的調試語句。

(3)strace的使用

strace可以跟蹤由用戶空間程序所發出的所有系統調用。有用的參數有:

  • -t  顯示調用發生的時間

  • -T  顯式調用所花費的時間

  • -e  限定被跟蹤的系統調用類型,如"-e execve"

  • -f  跟蹤所有子進程

  • -p  跟蹤特定進程。如"-p 8856"

  • -o  將輸出的信息導入特定的文件

strace對于發現系統調用時的細微錯誤非常有用,尤其是針對多進程的程序,可以通過strace輸出的返回值和進程pid獲得大量有用信息。如:

$>strace -o zht.txt -f ./process_create

(4)ltrace的使用

ltrace可以跟蹤由用戶空間程序所發出的所有動態庫函數調用。有用的參數有:

  • -t  顯示調用發生的時間

  • -T  顯式調用所花費的時間

  • -f  跟蹤所有子進程

  • -p  跟蹤特定進程

  • -o  將輸出的信息導入特定的文件

(5)查看oops消息

oops是內核告知用戶有不幸發生的最常用方式。通常,發送完oops后,內核會處于一種不穩定狀態。

在某些情況下,oops會導致內核混亂,而混亂的結果就是死機,這些情況可能包括:

  • *oops發生在持有鎖的代碼中

  • *oops發生在和硬件設備通訊的過程中

  • *oops在中斷上下文中發生

  • *oops發生在idle進程(0)或init進程(1),因為內核沒有這兩個進程沒法工作

如果oops在其他進程運行時發生,內核會殺死該進程并嘗試著繼續運行。oops的產生有很多原因,包括內存訪問越界或非法指令等。

oops包含的最重要訊息是寄存器上下文和回溯線索(call trace)可以人為引起oops,如:

if(bad_thing)
 BUG();
//或 BUG_ON(bad_thing);

可以用panic()引發更嚴重的錯誤,調用panic()不但會打印錯誤信息,還會掛起整個系統。只有在極端惡劣的情況下才會使用:

if(terrible_thing)
 panic("foo is %ld!\n", foo);

有些時候,只要打印一下棧信息就可以幫助測試,如dump_stack():

 if(!debug_check){
  printk(KERNEL_DEBUG "provide some info\n");
  dump_stack();
 }

以上是“Linux內核設備驅動之內核調試技術的示例分析”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

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

AI

岑溪市| 洛隆县| 泗阳县| 庐江县| 岳阳市| 平顶山市| 方城县| 浏阳市| 桓台县| 故城县| 周至县| 南召县| 佛教| 慈利县| 商洛市| 全南县| 宕昌县| 磴口县| 龙门县| 子洲县| 伊宁市| 辽阳市| 讷河市| 庐江县| 蛟河市| 上栗县| 新巴尔虎左旗| 哈巴河县| 康马县| 璧山县| 含山县| 卢龙县| 佛教| 康定县| 治县。| 通化市| 灵寿县| 营山县| 庆安县| 延庆县| 石阡县|