最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

CONFIG_DEBUG_KERNEL

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

具體的調(diào)試選項(xiàng)說(shuō)明可參見(jiàn)驅(qū)動(dòng)一書(shū),或通過(guò)menuconfig的help說(shuō)明查看。

(2)如何通過(guò)宏對(duì)printk調(diào)試語(yǔ)句進(jìn)行全局控制

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

(3)strace的使用

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

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

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

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

(4)ltrace的使用

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

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

(5)查看oops消息

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

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

  • *oops發(fā)生在持有鎖的代碼中
  • *oops發(fā)生在和硬件設(shè)備通訊的過(guò)程中
  • *oops在中斷上下文中發(fā)生
  • *oops發(fā)生在idle進(jìn)程(0)或init進(jìn)程(1),因?yàn)閮?nèi)核沒(méi)有這兩個(gè)進(jìn)程沒(méi)法工作

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

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

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

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

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

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

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

總結(jié)

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

相關(guān)文章

  • linux中$符號(hào)的基礎(chǔ)用法總結(jié)

    linux中$符號(hào)的基礎(chǔ)用法總結(jié)

    這篇文章主要給大家介紹了關(guān)于linux中$符號(hào)的基礎(chǔ)用法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用linux系統(tǒng)具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • ubuntu下chorme提示輸入秘鑰環(huán)的解決方法

    ubuntu下chorme提示輸入秘鑰環(huán)的解決方法

    這篇文章主要給大家介紹了ubuntu下chorme提示輸入秘鑰環(huán)的解決方法,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-04-04
  • linux 編譯安裝python3.6的教程詳解

    linux 編譯安裝python3.6的教程詳解

    這篇文章主要介紹了linux 編譯安裝python3.6的教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-10-10
  • Ubuntu下安裝rsh實(shí)現(xiàn)無(wú)密碼訪問(wèn)詳解

    Ubuntu下安裝rsh實(shí)現(xiàn)無(wú)密碼訪問(wèn)詳解

    這篇文章主要為大家詳細(xì)介紹了Ubuntu下安裝rsh實(shí)現(xiàn)無(wú)密碼訪問(wèn)的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • Linux之CentOS7下如何關(guān)閉SELINUX

    Linux之CentOS7下如何關(guān)閉SELINUX

    這篇文章主要介紹了Linux之CentOS7下如何關(guān)閉SELINUX問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • ubuntu16.04在python3 下創(chuàng)建Django項(xiàng)目并運(yùn)行的操作方法

    ubuntu16.04在python3 下創(chuàng)建Django項(xiàng)目并運(yùn)行的操作方法

    這篇文章主要介紹了ubuntu16.04在python3 下創(chuàng)建Django項(xiàng)目并運(yùn)行,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-09-09
  • linux(centos7)搭建SVN服務(wù)器的思路

    linux(centos7)搭建SVN服務(wù)器的思路

    這篇文章主要為大家詳細(xì)介紹了linux搭建SVN服務(wù)器的思路,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • Linux中的tcpdump命令示例詳解

    Linux中的tcpdump命令示例詳解

    這篇文章主要給大家介紹了關(guān)于Linux中tcpdump命令的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Linux 用cp和rsync同步文件時(shí)跳過(guò)指定目錄的方法

    Linux 用cp和rsync同步文件時(shí)跳過(guò)指定目錄的方法

    某測(cè)試站點(diǎn),在某個(gè)節(jié)點(diǎn)的時(shí)候需要同步到正式站點(diǎn)去,但是里面的config目錄不能覆蓋
    2012-11-11
  • CentOS服務(wù)器+監(jiān)控寶SNMP監(jiān)控全攻略分享

    CentOS服務(wù)器+監(jiān)控寶SNMP監(jiān)控全攻略分享

    很多人和Sudu一樣都想使用監(jiān)控寶去監(jiān)控自己的linux服務(wù)器,但是因?yàn)榘惭bsnmp存在一些問(wèn)題導(dǎo)致無(wú)法成功設(shè)置snmp的設(shè)置。
    2010-12-12

最新評(píng)論

蒙山县| 阿拉善右旗| 道真| 仪陇县| 舞钢市| 红原县| 汾西县| 元朗区| 阿拉善右旗| 吉安县| 全椒县| 襄汾县| 蓬溪县| 政和县| 福鼎市| 昌黎县| 威远县| 都昌县| 河西区| 新邵县| 田阳县| 凤山县| 闸北区| 祥云县| 乌拉特后旗| 河曲县| 伊吾县| 海安县| 安岳县| 屏山县| 门源| 湟源县| 烟台市| 乌苏市| 许昌县| 房产| 莱芜市| 策勒县| 廊坊市| 台湾省| 昌江|