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

小默

【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>
            国产日韩精品在线观看| 国产主播一区二区三区四区| 一区二区三欧美| 亚洲成色777777女色窝| 日韩视频在线免费观看| 久久综合九色综合久99| 久久久国产视频91| 久久久久免费视频| 久久爱www| 久久精品免费电影| 麻豆成人综合网| 亚洲电影在线免费观看| 亚洲区一区二区三区| 日韩网站在线观看| 一区二区三区黄色| 性欧美18~19sex高清播放| 久久se精品一区精品二区| 久久人人97超碰国产公开结果| 久久人91精品久久久久久不卡| 欧美国产乱视频| 国产精品二区三区四区| 国内精品亚洲| 一本在线高清不卡dvd| 欧美一级专区免费大片| 久热国产精品视频| 亚洲理伦在线| 久久久精品一区二区三区| 欧美激情第三页| 国产精品中文在线| 亚洲人成高清| 久久精品99无色码中文字幕 | 久久人人97超碰国产公开结果| 麻豆精品一区二区综合av| 欧美日韩国产三区| 国产综合色一区二区三区| 99精品久久久| 久久综合九色综合欧美狠狠| 9i看片成人免费高清| 久久久久久久久综合| 国产精品地址| 亚洲精品一二| 蜜桃久久精品乱码一区二区| 亚洲视频视频在线| 欧美福利视频| 亚洲第一在线| 久久久久久亚洲精品不卡4k岛国| 91久久精品国产91久久| 老司机一区二区三区| 亚洲人永久免费| 亚洲欧洲日产国产网站| 在线播放视频一区| 亚洲在线免费| 亚洲毛片在线免费观看| 久久国产精品久久久久久久久久| 欧美日韩一区自拍| 亚洲日本久久| 免费成人在线观看视频| 亚洲一级黄色av| 欧美日韩久久| 亚洲精选久久| 亚洲国产天堂久久综合网| 久久久久亚洲综合| 在线观看视频欧美| 久久综合九色综合欧美就去吻| 欧美一级在线播放| 国产亚洲精品成人av久久ww| 欧美在线免费播放| 午夜影院日韩| 国内精品模特av私拍在线观看| 久久免费精品视频| 久久国产福利| 亚洲国产精品传媒在线观看 | 99re66热这里只有精品3直播| 欧美国产日韩免费| 免费观看亚洲视频大全| 亚洲精品一区二区三区99| 亚洲国产精品久久久久久女王| 欧美激情1区2区| 亚洲永久免费观看| 欧美亚洲午夜视频在线观看| 国产一区二区三区电影在线观看| 久久成人免费网| 久久精品国产77777蜜臀| 在线免费日韩片| 最新日韩欧美| 国产精品区一区二区三| 久久精品一二三| 农村妇女精品| 在线一区欧美| 性欧美暴力猛交69hd| 亚洲国产成人av在线| 日韩亚洲欧美成人一区| 国产精品五月天| 母乳一区在线观看| 欧美日韩在线视频一区二区| 久久精品夜色噜噜亚洲a∨| 欧美mv日韩mv亚洲| 欧美一区二区三区播放老司机| 久久久99久久精品女同性| 亚洲国产成人久久综合| 99这里只有精品| 在线观看欧美黄色| 亚洲一区欧美激情| 亚洲精品免费在线观看| 亚洲免费影视第一页| 亚洲欧洲精品成人久久奇米网| 亚洲先锋成人| 日韩视频在线一区| 久久都是精品| 性欧美video另类hd性玩具| 欧美成人在线免费观看| 欧美在线免费看| 国产精品chinese| 毛片精品免费在线观看| 国产精品日韩在线播放| 亚洲成人资源网| 黄色成人91| 亚洲综合欧美日韩| 日韩一区二区电影网| 久久电影一区| 欧美影院午夜播放| 欧美精品粉嫩高潮一区二区| 男女av一区三区二区色多| 国产精品视频久久一区| 亚洲欧洲日产国产综合网| 1024国产精品| 欧美一级淫片aaaaaaa视频| 亚洲欧美日产图| 欧美精品一区在线| 亚洲国产成人久久综合一区| 黑人巨大精品欧美一区二区| 亚洲摸下面视频| 亚洲自拍另类| 欧美日韩国产91| 亚洲人成77777在线观看网| 国内激情久久| 亚洲一区二区三区精品在线观看 | 国产精品成人av性教育| 欧美激情精品久久久久久免费印度| 国产欧美精品| 欧美亚洲在线| 久久久青草婷婷精品综合日韩| 国产日韩欧美高清免费| 亚洲欧美日韩在线观看a三区| 亚洲天堂网在线观看| 欧美精品在线播放| 亚洲欧洲精品一区二区| 亚洲精品久久久久久一区二区| 久久综合影视| 影音先锋国产精品| 久久久999精品视频| 久久久亚洲人| 尤物99国产成人精品视频| 久久日韩粉嫩一区二区三区| 久久久久久夜| 亚洲电影免费在线| 欧美大片国产精品| 亚洲精品永久免费| 午夜精品视频在线观看| 国产视频综合在线| 久久久久www| 亚洲国产欧美另类丝袜| 亚洲一区二区三区久久| 国产精品久久二区| 欧美一区二视频| 亚洲片在线观看| 亚洲欧美日韩一区在线观看| 国产性做久久久久久| 麻豆成人av| 国产精品99久久久久久久久久久久 | 欧美www视频在线观看| 亚洲精品之草原avav久久| 夜夜嗨av色综合久久久综合网 | 美脚丝袜一区二区三区在线观看| 欧美成人四级电影| 亚洲无线一线二线三线区别av| 国产亚洲欧洲997久久综合| 欧美a级一区二区| 午夜精品久久久久久久蜜桃app | 99riav1国产精品视频| 国产精品久久波多野结衣| 久久综合色影院| 中文精品视频| 欧美国产在线电影| 亚洲视频免费看| 在线欧美福利| 国产日韩欧美二区| 欧美日韩亚洲一区二区| 久久久噜噜噜久久中文字免| 一区二区三区精品国产| 久久男人资源视频| 亚洲一区免费| 亚洲欧洲三级电影| 国产一区美女| 国产精品嫩草99av在线| 欧美精品日韩www.p站| 久久久亚洲高清| 亚洲欧美日韩另类精品一区二区三区| 久久综合九色九九| 欧美一区国产二区|