青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

小默

【zz】linux內(nèi)核驅(qū)動(dòng)模塊的調(diào)試技術(shù)總結(jié)

原文:http://www.cnitblog.com/textbox/articles/61881.html

這些天來(lái)弄了一個(gè)簡(jiǎn)單的驅(qū)動(dòng)模塊,后發(fā)現(xiàn)系統(tǒng)只要一卸載模塊系統(tǒng)就會(huì)死掉。到底是那里出了錯(cuò)?
如果你只是通過printk來(lái)調(diào)試, 而沒有其他的方法去檢測(cè)錯(cuò)誤的。
也是這個(gè)原因促使我寫驅(qū)動(dòng)模塊調(diào)試技術(shù)相關(guān)技術(shù)。要學(xué)好一個(gè)編程語(yǔ)言工具首先調(diào)試技術(shù)也一定同步。
(如果linux 也能做出一個(gè)類似windows 下的 Windbg 或 Soft-ICE 那就不必那么麻煩了)
這篇文章不是一氣呵成的,只是我在學(xué)習(xí)內(nèi)核調(diào)試的一個(gè)筆記。

調(diào)試技術(shù)有以下幾種:

  1.用打印調(diào)試
  2.文件保存調(diào)試信息
  3.truss、strace和ltrace命令輸出信息來(lái)調(diào)試
  4.調(diào)試器來(lái)調(diào)試

對(duì)于第一種 “用打印調(diào)試 ”
利用函數(shù)或命令把相應(yīng)的信息輸出到console或文件內(nèi)
這些函數(shù)有 printk , STOCLINUX 等等

prink 的一般用法是定義成一個(gè)公用的宏

#undef PDEBUG             /* undef it, just in case */
#ifdef SCULL_DEBUG
   #ifdef __KERNEL__
     
/* This one if debugging is on, and kernel space */
       #define PDEBUG(fmt, args) printk( KERN_DEBUG 
"scull: " fmt, ## args)
   #
else
     
/* This one for user space */
       #define PDEBUG(fmt, args) fprintf(stderr, fmt, ## args)
   #endif
#else
   #define PDEBUG(fmt, args) 
/* not debugging: nothing */
#endif

#undef PDEBUGG
#define PDEBUGG(fmt, args/* nothing: it's a placeholder */
在makefile 里面添加
 
DEBUG = y
# Add your debugging flag (or not) to CFLAGS
ifeq ($(DEBUG),y)
DEBFLAGS 
= ---D SCULL_DEBUG # "-O" is needed to expand inlines
else
DEBFLAGS 
= -O2
endif
CFLAGS 
+= $(DEBFLAGS)

這樣定義的宏可以在內(nèi)核模式和用戶模式在 Debug 版本下輸出調(diào)試信息,而在release版本編譯時(shí)候去掉調(diào)試輸出的函數(shù)代碼。
并可以通過設(shè)置makefile就可以是否輸出調(diào)試信息,缺點(diǎn)是修改makefile還需要重新編譯一次
想法,如果能給模塊一個(gè)配置文件 (*.conf)那就修改配置文件就不用重新編譯,只需要卸載安裝模塊就實(shí)現(xiàn)調(diào)試信息的輸出,
缺點(diǎn)是影響系統(tǒng)的性能。


對(duì)於第二種 “文件保存調(diào)試信息 ”
內(nèi)核模式下可以使用 /proc文件系統(tǒng) 或者 seq_file 來(lái)記錄調(diào)試信息。創(chuàng)建自己的/proc文件系統(tǒng)的文件 或 seq_file 文件 并記錄相應(yīng)的調(diào)試信息,用于查詢。
seq_file 操作可以參考 http://blog.chinaunix.net/u/12313/showart_172686.html;


還有 用ioctl 命令。這些命令可以從驅(qū)動(dòng)模塊拷貝相關(guān)的數(shù)據(jù)結(jié)構(gòu)到用戶空間, 用于查詢它們,缺點(diǎn)是需要用另外的程序來(lái)發(fā)出和顯示調(diào)試信息,并增加模塊的體積 。優(yōu)點(diǎn)是比/proc塊

oops消息 ,通常消息發(fā)生于引用了 NULL 指針或者使用其他不正確指針值。


調(diào)試器

 使用 gdb
   優(yōu)點(diǎn):比較適用于用戶模式下調(diào)試程序,linux自帶無(wú)需重新安裝
   缺點(diǎn):不適合內(nèi)核模塊的調(diào)試(也可以內(nèi)核調(diào)試,利用它的遠(yuǎn)程調(diào)試功能。需要兩臺(tái)電腦)
 
  主要步驟是
  1.執(zhí)行  #gdb program
  2.執(zhí)行到mian():#start
  3.設(shè)置斷點(diǎn)
  4.調(diào)試

 具體命令使用:  參考 http://baike.baidu.com/view/639266.htm



 使用kdb
 優(yōu)點(diǎn):不需要遠(yuǎn)程調(diào)試
 缺點(diǎn):不支持源代碼級(jí)別上的調(diào)試只能使用匯編級(jí)別的調(diào)試,需要重新下載安裝包,安裝需要重新編譯內(nèi)核激活kdb


 使用 kgdb
 優(yōu)點(diǎn):可以對(duì)內(nèi)核進(jìn)行全方面的調(diào)試  (感覺有點(diǎn)類似 windows 下的WinDdg)
 缺點(diǎn):需要兩臺(tái)電腦,配置復(fù)雜 ,更新慢,到目前位置最高只能支持2.6.15.5 版本的內(nèi)核


 使用Linux Trace Toolkit



 使用Dynamic Probes ( DProbes )

 
使用 SkyEye
 優(yōu)點(diǎn):ARM Simulator很好地結(jié)合在了一起 主要用于嵌入式驅(qū)動(dòng)開發(fā)領(lǐng)域
 缺點(diǎn):配置文件設(shè)置復(fù)雜

使用 UML (虛擬機(jī)類似)
優(yōu)點(diǎn):UML適合于調(diào)試那些處理與硬件無(wú)關(guān)的驅(qū)動(dòng)程序
缺點(diǎn):UML并不適合于調(diào)試那些處理實(shí)際硬件的驅(qū)動(dòng)程序

使用 JTAG- based debuggers
優(yōu)點(diǎn):The JTAG (Joint Test Action Group) based debuggers are hardware assisted and powerful tools
缺點(diǎn): but are expensive.

posted on 2010-04-05 16:18 小默 閱讀(1182) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Linux

導(dǎo)航

統(tǒng)計(jì)

留言簿(13)

隨筆分類(287)

隨筆檔案(289)

漏洞

搜索

積分與排名

最新評(píng)論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美成人精品在线播放| 亚洲激情不卡| 久久aⅴ乱码一区二区三区| 欧美高清视频免费观看| 亚洲欧美日本伦理| 欧美体内she精视频| 亚洲激情国产| 欧美成人免费在线观看| 羞羞色国产精品| 国产精品爽黄69| 午夜日韩在线| 亚洲视频中文字幕| 国产精品免费久久久久久| 中文一区字幕| 99综合在线| 国产精品美女主播在线观看纯欲| 亚洲午夜精品| 亚洲一区尤物| 国产一本一道久久香蕉| 久久精品国产综合| 久久久久久久综合色一本| 尤物精品在线| 亚洲大胆人体视频| 欧美精品一区二区三区蜜桃| 中国成人在线视频| 亚洲一区二区三区高清不卡| 国产欧美一区二区精品性色 | 欧美高清免费| 欧美1区2区| 欧美激情国产精品| 亚洲深夜福利在线| 亚洲在线中文字幕| 狠狠色狠狠色综合人人| 欧美高清不卡| 国产精品sss| 久久久久欧美| 欧美大尺度在线观看| 99视频精品| 亚洲欧美精品中文字幕在线| 黄色国产精品一区二区三区| 91久久国产综合久久91精品网站| 欧美日韩人人澡狠狠躁视频| 性久久久久久久久久久久| 久久精品日产第一区二区| 亚洲欧洲免费视频| 亚洲一区二区三区午夜| 狠狠色狠狠色综合日日五| 91久久国产综合久久蜜月精品 | 亚洲一区视频在线| 在线观看欧美一区| 一区二区三区久久网| 黄色一区二区三区四区| 亚洲人成7777| 精品91视频| 一区二区三区回区在观看免费视频| 国产亚洲va综合人人澡精品| 亚洲国产精品久久久久秋霞不卡| 国产精品观看| 欧美国产视频在线| 国产日韩av一区二区| 亚洲免费高清视频| 在线国产欧美| 亚洲专区一区| 在线视频日本亚洲性| 久久精品国产精品亚洲精品| 中文一区二区| 免费欧美网站| 巨乳诱惑日韩免费av| 国产精品久久久久久五月尺| 亚洲国产欧美一区二区三区久久| 国产精品黄色| 亚洲美女av黄| 亚洲精品1234| 久久九九免费| 欧美一区二区大片| 欧美午夜精品理论片a级大开眼界| 美女诱惑一区| 国产自产高清不卡| 亚洲欧美日韩成人| 午夜精品久久久久久久99热浪潮| 欧美风情在线观看| 欧美高清在线播放| 91久久精品国产91久久性色tv| 欧美在线综合视频| 久久大综合网| 国产欧美日韩伦理| 亚洲图片欧美午夜| 亚洲一区二区三区四区五区午夜 | 欧美日韩免费视频| 国产精品一区二区久久久久| 亚洲国产精品一区二区三区| 欧美一区二区精美| 久久精品一区二区三区中文字幕| 国产精品爱久久久久久久| 亚洲另类视频| 亚洲视频综合在线| 欧美三级视频在线播放| 一区二区三区免费看| 一区二区三区久久| 欧美日韩亚洲免费| 亚洲亚洲精品三区日韩精品在线视频| 亚洲婷婷综合久久一本伊一区| 欧美日韩国产成人在线观看| 亚洲精品国产拍免费91在线| 中文一区二区在线观看| 国产精品sss| 欧美在线视频播放| 欧美成人精品高清在线播放| 亚洲黄色精品| 欧美日韩国产精品一卡| 亚洲一区二区高清| 欧美在线一二三四区| 国产主播精品在线| 欧美电影打屁股sp| 在线视频亚洲欧美| 久久久久免费| 99国产精品久久久久久久久久| 欧美天天视频| 欧美一区二区三区四区在线| 欧美mv日韩mv国产网站app| 亚洲精品日本| 国产日产精品一区二区三区四区的观看方式 | 欧美永久精品| 伊人成人在线| 欧美日韩成人在线观看| 亚洲一区日本| 欧美成人黄色小视频| 在线亚洲欧美视频| 国产一区二区三区直播精品电影| 欧美va亚洲va国产综合| 亚洲性图久久| 亚洲国产精品久久精品怡红院| 亚洲午夜一区二区| 1024日韩| 国产欧美一级| 欧美在线1区| 最近看过的日韩成人| 国产精品久在线观看| 久久亚洲综合网| 亚洲影院在线| 亚洲三级影院| 免费在线视频一区| 欧美一级片在线播放| 日韩视频―中文字幕| 国产综合av| 国产精品久久久久久久久免费桃花| 久久青草福利网站| 午夜国产精品视频免费体验区| 91久久久国产精品| 蜜臀av国产精品久久久久| 亚洲欧美在线一区| 亚洲素人一区二区| 日韩一区二区福利| 亚洲激情在线观看视频免费| 国产在线欧美日韩| 国产精品一区二区久激情瑜伽| 欧美激情网站在线观看| 久久综合五月天婷婷伊人| 欧美在线网站| 亚洲一级片在线观看| 激情视频一区二区| 日韩亚洲国产欧美| 亚洲精品黄色| 亚洲第一天堂无码专区| 国产日韩欧美日韩| 国产精品久久久久久久久久尿| 欧美国产第一页| 欧美成人激情在线| 欧美a一区二区| 老色鬼精品视频在线观看播放| 欧美一区二区三区在线观看 | 性视频1819p久久| 亚洲夜间福利| 亚洲性感美女99在线| 亚洲深爱激情| 这里只有精品视频在线| 在线中文字幕不卡| 亚洲天堂av高清| 亚洲调教视频在线观看| 亚洲一区二区精品视频| 亚洲一区二区三区视频| 午夜精品久久久| 欧美一区二区三区播放老司机| 午夜精品久久久99热福利| 亚洲欧美国产三级| 欧美夜福利tv在线| 久久精品视频va| 久久综合久久美利坚合众国| 免费欧美在线视频| 欧美另类综合| 欧美日韩视频一区二区三区| 欧美色视频一区| 国产人妖伪娘一区91| 精品av久久707| 亚洲欧洲日韩女同| 一区二区三区久久久| 欧美影院久久久| 欧美国产丝袜视频| 99国产精品私拍| 欧美亚洲免费电影|