轉於:
應用於ubuntu系統。
有網路的時侯,使用LXR(TheLinuxCrossReferencer)在線閱讀源碼雖說是一件很酷的事情。在無網路的情況下linux 內核程式碼讀取工具ubuntu linux,只透過vim步入內核原始碼那樣查找就變得有些勉強。接出來,本文將介紹一種快速定位原始碼的工具:ctags和cscope。透過vim編輯器linux標準教程,再配合使用上述兩種工具就可以快速定位想要查看的源碼。好了,開始吧!
1.下載最新核心源碼包,解壓縮至主目錄下
接出來的步驟其實可以在目前系統核心原始碼目錄下進行,不過為了保險期間還是最好在主目錄下專門建立一個儲存原始碼的目錄。下文所說的源碼目錄均指主目錄下的源碼目錄。
2.安裝ctags
使用指令:sudoapt-getinstallctags
3.安裝cscope
#使用指令:sudoapt-getinstallcscope
4.成標籤檔
在原始碼目錄下透過指令maketags(也可使用:ctags-R)產生標籤檔
5.產生索引檔
在原始碼目錄下透過指令makecscope(也可使用:cscope-indexer-r)產生索引檔。
6.將索引檔案匯出vim中
使用指令開啟vim的設定檔:sudogedit/etc/vim/vimrc;之後在該檔案下加入如下程式碼:
iffilereadable("cscope.out")
csaddcscope.out
endif
這樣每次打開vim就可以直接使用cscope了。
完成以上步驟之後就可以透過vim進行原始碼的快速定位了。上述安裝的ctags和cscope都屬於原始碼索引工具,因而僅安裝三者之一也是可以的。不錯,儘管ctags可以快速定位所輸入的標籤,但cscope的使用方式則更靈活。所以二者同時安裝使用上去更方便。下邊是一些簡單的使用方式,僅供參考。
1.使用ctags
ctags的使用非常簡單,首先步入源碼目錄下,打開vim編輯器,在命令模式下輸入:tagtag_name按回車即可。一般tag_name可以是結構體名稱,函數名稱,巨集變數名稱等。一般輸入上述指令後,由於找到的標籤並不惟一,所以也須要配合使用下列指令:
tfirst:跳至第一個
tnext:跳至下一個
tlast:跳至最後一個
2.使用cscope
儘管ctags使用便捷快捷,但有時侯使用cscope更靈活linux 內核程式碼讀取工具,首先可以看cscope的幫助文件:
引用
cscope指令:
add:新增一個新的資料庫(用法:addfile|dir[pre-path][flags])
find:查詢一個模式(用法:findc|d|e|f|g|i|s|tname)
c:找到呼叫這個函數的函數
d:找到被這個函數呼叫的函數
e:找到這個egrep模式
f:找到此資料夾
g:找到這個定義
i:找檔案#包含這個檔案
s:找出這個C符號
t:找出對其的形參
help:顯示此資訊(用法:help)
kill:結束一個聯接(用法:kill#)
reset:重置所有聯結(用法:reset)
show:顯示聯結(用法:show)
透過前面的說明檔案可以發覺假如想找到request_irq函數的定義處程式碼,即可使用這個指令:csfindgrequest_irq來進行查找。大多數情況下查找的結果並不惟一,由於須要在多個結果中通過頭文件來繼續查看。
一般是先透過cscope大致定位到頭文件,再透過ctags在該頭檔中詳盡定位。雖然這兩種工具不限於上述用法,更多用法可以再深入使用的過程中漸漸摸索,並且配合正規表示式等效果會更好。
以上是使用ctags和cscope在線閱讀源碼:TheLinuxCrossReferencer的教程的詳細內容。更多資訊請關注PHP中文網其他相關文章!