精品久久看,欧美成人久久一级c片免费,日本加勒比在线精品视频,国产一区二区三区免费大片天美,国产成人精品999在线,97理论三级九七午夜在线观看

東坡下載:內(nèi)容最豐富最安全的下載站!

首頁(yè)IT技術(shù)操作系統(tǒng) → 分享閱讀linux內(nèi)核代碼的幾個(gè)技巧

分享閱讀linux內(nèi)核代碼的幾個(gè)技巧

相關(guān)文章發(fā)表評(píng)論 來(lái)源:本站時(shí)間:2011/4/28 12:44:41字體大小:A-A+

更多

作者:點(diǎn)擊:312次評(píng)論:0次標(biāo)簽:

這些技巧都是平時(shí)我自已在閱讀的時(shí)候總結(jié)的,想到哪就說(shuō)到哪了,其實(shí)我總結(jié)的技巧遠(yuǎn)不止這些,但是先說(shuō)這些吧。后面想到了再補(bǔ)充,只有在拿到代碼做分析的時(shí)候遇到實(shí)際的問(wèn)題時(shí),才能見(jiàn)招拆招,想些辦法。
其實(shí)linux內(nèi)核源碼還是比較難跟蹤的,我剛開(kāi)始閱讀內(nèi)核源碼的時(shí)候,感覺(jué)很多東西經(jīng)常找著找著就失去頭緒了,很郁悶。
通過(guò)一些閱讀后發(fā)現(xiàn)內(nèi)核也就那么幾招用的比較多,摸清楚其脾氣后,剩下的就是耐心了。
1.我曾經(jīng)用過(guò)一陣VI,裝了一堆插件后折騰了一陣,發(fā)現(xiàn)還是無(wú)法感受其推崇者所說(shuō)的那一堆好處,還是喜歡用sourceinsight。好了,說(shuō)正題了。首先我們要解決的就是函數(shù)或者變量找不到定義地方的問(wèn)題,表現(xiàn)在sourceinsight上就是那個(gè)變量是黑的,到處找不到。
比如我們看們看到:
int bus_register(struct bus_type * bus)
{
...
subsys_set_kset(bus, bus_subsys);
retval = subsystem_register(&bus->subsys);
...
}
其中的bus_subsys。
找了一下bus_subsys找不到定義的地方,肯定是內(nèi)核和我們躲貓貓,這時(shí)候我們可以是否查找一些明顯的“定義痕跡”,比如在bus_subsys中的subsys或者說(shuō)_subsys。果然有新發(fā)現(xiàn)。我們找到了這么一個(gè)宏。
#define decl_subsys(_name,_type,_uevent_ops) \
struct subsystem _name##_subsys = { \
.kset = { \
.kobj = { .name = __stringify(_name) }, \
.ktype = _type, \
.uevent_ops =_uevent_ops, \
} \
}
得,我們回過(guò)頭在包含有bus_register的源文件及頭文件中查找一下,果然找到了static decl_subsys(bus, &ktype_bus, NULL);這么一行代碼。
像這種東西我不是很建議一找不到就直接去網(wǎng)上找,關(guān)于內(nèi)核的文章網(wǎng)上雖然很多,但都不會(huì)細(xì)到所有的細(xì)節(jié)都有,你總有獨(dú)立處理問(wèn)題的時(shí)候,為什么我們不提前讓自已多鍛煉一下呢?
2.順序問(wèn)題,內(nèi)核有很多的順序,比如初始化的順序,比如我們有module_init,__initcall等等,一來(lái)編譯的時(shí)候文件夾和文件有順序,另外不同的宏包含的東西順序也是有講究的,所以在分析模塊的時(shí)候一定要注意這個(gè),這個(gè)東西只能說(shuō)是注意了,如果對(duì)一個(gè)模塊不熟悉的時(shí)候,不可能做到全部都了解,像我有時(shí)候也會(huì)落下一些東西忘記分析,但是隨著看內(nèi)核的時(shí)候越久,內(nèi)核那些慣用的手法見(jiàn)多了后,就發(fā)現(xiàn)不外如是,也就那三瓜子兩棗。
3.我們要解決內(nèi)核運(yùn)行時(shí)那一堆指來(lái)指去的指針的問(wèn)題。這個(gè)是我自已調(diào)試用的土方法,我就用dump_stack在關(guān)鍵的地方打印出順序就行了。因?yàn)槲覀冏龅氖乔度胧皆O(shè)備,很多時(shí)候不能用KGDB這些高級(jí)工具在線調(diào),而且這種方法基本不增加其它的性能開(kāi)銷。
4.有多個(gè)定義不知道用哪個(gè)。這個(gè)基本是因?yàn)長(zhǎng)INUX支持的CPU比較多造成的。
我們可以用GDB靜態(tài)分析,也可以用objdump和nm等工具來(lái)精確定位一些函數(shù)和變量,也可以根據(jù)宏來(lái)一步一步分析,比如是mips的那么我們就進(jìn)mips看,這樣一步一步來(lái)。
5.具備一些意識(shí),你現(xiàn)在面對(duì)的是操作系統(tǒng),不僅僅是只有C文件和頭文件的應(yīng)用,MAKEFILE,鏈接文件,Kconfig都應(yīng)該是你的朋友。尤其在看一個(gè)模塊或者一小部分你感興趣的代碼的時(shí)候,首先可以用MAKEFILE和KCONFIG來(lái)縮小你需要關(guān)注的范圍。其實(shí)關(guān)于MAKEFILE和KCONFIG的重要性,fudan_abc在他那個(gè)LINUX那些事之我是USB中強(qiáng)調(diào)的比較多,但是說(shuō)實(shí)話,fudan_abc那文章看了玩是挺好玩的,可惜感覺(jué)好像看了沒(méi)啥用,就是知道了一堆概念,不能串起來(lái),我不知道是我的理解能力不行,還是任僑偉同志壓根沒(méi)有講清楚。呵呵。

相關(guān)評(píng)論

閱讀本文后您有什么感想? 已有 人給出評(píng)價(jià)!

  • 2791 喜歡喜歡
  • 2101 頂
  • 800 難過(guò)難過(guò)
  • 1219 囧
  • 4049 圍觀圍觀
  • 5602 無(wú)聊無(wú)聊
熱門評(píng)論
最新評(píng)論
發(fā)表評(píng)論 查看所有評(píng)論(0)
昵稱:
表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過(guò)審核才能顯示)
主站蜘蛛池模板: 视频一区 中文字幕 | 男女免费在线视频 | 国产精品久久人人做人人爽 | 久久只有这才是精品99 | 日日拍夜夜嗷嗷叫狠狠 | 我妻子的姐姐2 | 国产麻豆久久 | 国语精品视频在线观看不卡 | 99re视频在线播放 | 免费精品视频 | 五月花在线视频 | 久久精品国产91久久综合麻豆自制 | 欧美黄色性 | 久久国产精品一区二区 | 国产福利毛片 | 99久久综合狠狠综合久久一区 | 成人免费视频888在www电影 | 九九99九九视频在线观看 | 99热这里只有精品久久免费 | 高清视频一区 | 伊人久久青草 | 色偷偷网站 | 久久这里精品 | 国产97色在线中文 | 久久亚洲aⅴ精品网站婷婷 久久鸭综合久久国产 | 黄色视屏在线免费观看 | 国产在线播放你懂的 | 借种免费在线观看 | 国产美女视频网站 | 娼年免费在线观看 | 色在线视频免费 | 日韩一级视频 | a级免费视频 | 97在线观看视频免费 | 成 人 黄 色 视频免费播放 | 五月天精品 | 国产99久久久国产精品免费直播 | 日本无卡码免费一区二区三区 | 免费人成在线观看播放国产 | 欧美国产日韩久久久 | 国产片精品电影www 国产片a国产片免费看视频 |