欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Linux內(nèi)核設(shè)備驅(qū)動之內(nèi)核的調(diào)試技術(shù)筆記整理

 更新時間:2018年12月17日 11:35:03   作者:Engineer-Bruce_Yang  
今天小編就為大家分享一篇關(guān)于Linux內(nèi)核設(shè)備驅(qū)動之內(nèi)核的調(diào)試技術(shù)筆記整理,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
/******************
 * 內(nèi)核的調(diào)試技術(shù)
 ******************/

(1)內(nèi)核源代碼中的一些與調(diào)試相關(guān)的配置選項

內(nèi)核的配置選項中包含了一些與內(nèi)核調(diào)試相關(guān)的選項,都集中在"kernel hacking"菜單中。包括:

CONFIG_DEBUG_KERNEL

使其他的調(diào)試選項可用,應(yīng)該選中,其本身不會打開所有的調(diào)試功能。

具體的調(diào)試選項說明可參見驅(qū)動一書,或通過menuconfig的help說明查看。

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

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

(3)strace的使用

strace可以跟蹤由用戶空間程序所發(fā)出的所有系統(tǒng)調(diào)用。有用的參數(shù)有:

  • -t  顯示調(diào)用發(fā)生的時間
  • -T  顯式調(diào)用所花費的時間
  • -e  限定被跟蹤的系統(tǒng)調(diào)用類型,如"-e execve"
  • -f  跟蹤所有子進程
  • -p  跟蹤特定進程。如"-p 8856"
  • -o  將輸出的信息導(dǎo)入特定的文件

strace對于發(fā)現(xiàn)系統(tǒng)調(diào)用時的細微錯誤非常有用,尤其是針對多進程的程序,可以通過strace輸出的返回值和進程pid獲得大量有用信息。如:

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

(4)ltrace的使用

ltrace可以跟蹤由用戶空間程序所發(fā)出的所有動態(tài)庫函數(shù)調(diào)用。有用的參數(shù)有:

  • -t  顯示調(diào)用發(fā)生的時間
  • -T  顯式調(diào)用所花費的時間
  • -f  跟蹤所有子進程
  • -p  跟蹤特定進程
  • -o  將輸出的信息導(dǎo)入特定的文件

(5)查看oops消息

oops是內(nèi)核告知用戶有不幸發(fā)生的最常用方式。通常,發(fā)送完oops后,內(nèi)核會處于一種不穩(wěn)定狀態(tài)。

在某些情況下,oops會導(dǎo)致內(nèi)核混亂,而混亂的結(jié)果就是死機,這些情況可能包括:

  • *oops發(fā)生在持有鎖的代碼中
  • *oops發(fā)生在和硬件設(shè)備通訊的過程中
  • *oops在中斷上下文中發(fā)生
  • *oops發(fā)生在idle進程(0)或init進程(1),因為內(nèi)核沒有這兩個進程沒法工作

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

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

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

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

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

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

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

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接

相關(guān)文章

  • linux中xargs命令的各種使用技巧

    linux中xargs命令的各種使用技巧

    xargs是給命令傳遞參數(shù)的一個過濾器,也是組合多個命令的一個工具。下面這篇文章主要給大家介紹了關(guān)于linux中xargs命令用法的相關(guān)資料,需要的朋友可以參考借鑒,下面來跟著小編一起看看吧。
    2017-05-05
  • 一次Linux修改MySQL配置不生效的問題解決

    一次Linux修改MySQL配置不生效的問題解決

    這篇文章主要給大家介紹了關(guān)于Linux修改MySQL配置不生效問題的解決方法,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用Linux系統(tǒng)具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 詳解linux下fsevents模塊引起的npm ls報錯解決辦法

    詳解linux下fsevents模塊引起的npm ls報錯解決辦法

    這篇文章主要介紹了詳解linux下fsevents模塊引起的npm ls報錯解決辦法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-04-04
  • PHP程序員玩轉(zhuǎn)Linux系列 自動備份與SVN

    PHP程序員玩轉(zhuǎn)Linux系列 自動備份與SVN

    這篇文章主要為大家詳細介紹了PHP程序員玩轉(zhuǎn)Linux系列文章,學(xué)習(xí)自動備份與SVN教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • Linux提權(quán)技巧全面匯總

    Linux提權(quán)技巧全面匯總

    在Linux系統(tǒng)中,提權(quán)是指獲取更高的權(quán)限,這通常通過使用特定的命令或工具來完成,在這篇文章中,我們將探討一些常見的Linux提升權(quán)限的技巧:常用提權(quán)命令,反彈shell,獲取完整交互式SHELL,Linux內(nèi)核漏洞提權(quán),臟牛提權(quán),metasploit linux提權(quán),SUID提權(quán),passwd提權(quán),ssh密鑰提權(quán)
    2024-05-05
  • 詳解ubuntu安裝CMake的幾種方式

    詳解ubuntu安裝CMake的幾種方式

    這篇文章主要介紹了詳解ubuntu安裝CMake的幾種方式,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • centos中文件與權(quán)限的基本操作教程

    centos中文件與權(quán)限的基本操作教程

    這篇文章主要給大家介紹了關(guān)于centos文件與權(quán)限的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • Centos7服務(wù)器下啟動jar包項目的最佳方法

    Centos7服務(wù)器下啟動jar包項目的最佳方法

    這篇文章主要給大家分享介紹了關(guān)于Centos7服務(wù)器下啟動jar包項目的最佳方法,文中通過示例代碼以及圖文介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • apache負載均衡的安裝和實現(xiàn)方法

    apache負載均衡的安裝和實現(xiàn)方法

    在負載均衡技術(shù)中,硬件設(shè)備是比較昂貴的,對于負載均衡的學(xué)習(xí)者如果不是在企業(yè)中應(yīng)用或者是學(xué)員中學(xué)習(xí),很少有機會能碰到實際操作的訓(xùn)練。所以,很多朋友都會選擇軟件方面的設(shè)置進行研究?,F(xiàn)在我們就來介紹一下再Apache下的Tomcat負載均衡的一些使用問題
    2012-10-10
  • 簡單了解linux終端創(chuàng)建文件的2種常用方法

    簡單了解linux終端創(chuàng)建文件的2種常用方法

    這篇文章主要介紹了簡單了解linux終端創(chuàng)建文件的2種常用方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06

最新評論