轉自:http://www.zeuux.org/blog/user/leedy.chen/(陳莉君)
有網路的時候,使用LXR(The Linux Cross Referencer)線上閱讀源碼固然是一件很爽的事情。在無網路的情況下,只通過vim進入核心源碼那樣尋找就顯得有些勉強。接下來,本文將介紹一種快速定位源碼的工具:ctags和cscope。通過vim編輯器,再配合使用上述兩種工具就可以快速定位想要查看的源碼。好了,開始吧!
1.下載最新核心源碼包,解壓至主目錄下
接下來的步驟當然可以在當前系統核心源碼目錄下進行,不過為了保險期間還是最好在主目錄下專門建立一個存放源碼的目錄。下文所說的源碼目錄均指主目錄下的源碼目錄。
2.安裝ctags
使用命令:sudo apt-get install ctags
3.安裝cscope
使用命令:sudo apt-get install cscope
4.成標籤檔案
在源碼目錄下通過命令make tags產生標籤檔案
5.產生索引檔案
在源碼目錄下通過命令make cscope產生索引檔案。
6.將索引檔案匯入vim中
使用命令開啟vim的設定檔:sudo gedit /etc/vim/vimrc;然後在該檔案下添加如下代碼:
1 |
if filereadable(
"cscope.out" ) |
這樣每次開啟vim就可以直接使用cscope了。
完成以上步驟以後就可以通過vim進行源碼的快速定位了。上述安裝的ctags和cscope都屬於源碼索引工具,因此僅安裝兩者之一也是可以的。不錯,雖然ctags可以快速定位所輸入的標籤,但cscope的使用方法則更靈活。所以兩者同時安裝使用起來更方便。下面是一些簡單的使用方法,僅供參考。
1.使用ctags
ctags的使用特別簡單,首先進入源碼目錄下,開啟vim編輯器,在命令模式下輸入:tag tag_name 按斷行符號即可。通常tag_name可以是結構體名稱,函數名稱,宏變數名稱等。通常輸入上述命令後,因為找到的標籤並不唯一,所以還需要配合使用下述命令:
tfirst:跳至第一個
tnext:跳至下一個
tlast:跳至最後一個
2.使用cscope
雖然ctags使用方便快捷,但有時候使用cscope更靈活,首先可以看cscope的協助檔案:
02 |
add :添加一個新的資料庫 (用法: add file|dir [pre-path] [flags]) |
03 |
find :查詢一個模式 (用法: find c|d|e|f|g|i|s|t name) |
12 |
help :顯示此資訊 (用法: help) |
13 |
kill :結束一個串連 (用法: kill #) |
14 |
reset:重設所有串連 (用法: reset) |
通過上面的協助檔案可以發現如果想找到request_irq函數的定義處代碼,即可使用這個命令:cs find g request_irq來進行尋找。大多數情況下尋找的結果並不唯一,因為需要在多個結果中通過標頭檔來繼續查看。
通常是先通過cscope大致定位到標頭檔,再通過ctags在該標頭檔中詳細定位。其實這兩種工具並不局限於上述用法,更多用法可以再深入使用的過程中慢慢摸索,而且配合Regex等效果會更好。
轉自:http://www.zeuux.org/blog/user/leedy.chen/(陳莉君)
有網路的時候,使用LXR(The Linux Cross Referencer)線上閱讀源碼固然是一件很爽的事情。在無網路的情況下,只通過vim進入核心源碼那樣尋找就顯得有些勉強。接下來,本文將介紹一種快速定位源碼的工具:ctags和cscope。通過vim編輯器,再配合使用上述兩種工具就可以快速定位想要查看的源碼。好了,開始吧!
1.下載最新核心源碼包,解壓至主目錄下
接下來的步驟當然可以在當前系統核心源碼目錄下進行,不過為了保險期間還是最好在主目錄下專門建立一個存放源碼的目錄。下文所說的源碼目錄均指主目錄下的源碼目錄。
2.安裝ctags
使用命令:sudo apt-get install ctags
3.安裝cscope
使用命令:sudo apt-get install cscope
4.成標籤檔案
在源碼目錄下通過命令make tags產生標籤檔案
5.產生索引檔案
在源碼目錄下通過命令make cscope產生索引檔案。
6.將索引檔案匯入vim中
使用命令開啟vim的設定檔:sudo gedit /etc/vim/vimrc;然後在該檔案下添加如下代碼:
1 |
if filereadable(
"cscope.out" ) |
這樣每次開啟vim就可以直接使用cscope了。
完成以上步驟以後就可以通過vim進行源碼的快速定位了。上述安裝的ctags和cscope都屬於源碼索引工具,因此僅安裝兩者之一也是可以的。不錯,雖然ctags可以快速定位所輸入的標籤,但cscope的使用方法則更靈活。所以兩者同時安裝使用起來更方便。下面是一些簡單的使用方法,僅供參考。
1.使用ctags
ctags的使用特別簡單,首先進入源碼目錄下,開啟vim編輯器,在命令模式下輸入:tag tag_name 按斷行符號即可。通常tag_name可以是結構體名稱,函數名稱,宏變數名稱等。通常輸入上述命令後,因為找到的標籤並不唯一,所以還需要配合使用下述命令:
tfirst:跳至第一個
tnext:跳至下一個
tlast:跳至最後一個
2.使用cscope
雖然ctags使用方便快捷,但有時候使用cscope更靈活,首先可以看cscope的協助檔案:
02 |
add :添加一個新的資料庫 (用法: add file|dir [pre-path] [flags]) |
03 |
find :查詢一個模式 (用法: find c|d|e|f|g|i|s|t name) |
12 |
help :顯示此資訊 (用法: help) |
13 |
kill :結束一個串連 (用法: kill #) |
14 |
reset:重設所有串連 (用法: reset) |
通過上面的協助檔案可以發現如果想找到request_irq函數的定義處代碼,即可使用這個命令:cs find g request_irq來進行尋找。大多數情況下尋找的結果並不唯一,因為需要在多個結果中通過標頭檔來繼續查看。
通常是先通過cscope大致定位到標頭檔,再通過ctags在該標頭檔中詳細定位。其實這兩種工具並不局限於上述用法,更多用法可以再深入使用的過程中慢慢摸索,而且配合Regex等效果會更好。