使用vim+ctags+cscope閱讀核心源碼

來源:互聯網
上載者:User

轉自: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")
2     cs add cscope.out
3 endif

這樣每次開啟vim就可以直接使用cscope了。

完成以上步驟以後就可以通過vim進行源碼的快速定位了。上述安裝的ctags和cscope都屬於源碼索引工具,因此僅安裝兩者之一也是可以的。不錯,雖然ctags可以快速定位所輸入的標籤,但cscope的使用方法則更靈活。所以兩者同時安裝使用起來更方便。下面是一些簡單的使用方法,僅供參考。

1.使用ctags

ctags的使用特別簡單,首先進入源碼目錄下,開啟vim編輯器,在命令模式下輸入:tag tag_name 按斷行符號即可。通常tag_name可以是結構體名稱,函數名稱,宏變數名稱等。通常輸入上述命令後,因為找到的標籤並不唯一,所以還需要配合使用下述命令:

tfirst:跳至第一個

tnext:跳至下一個

tlast:跳至最後一個

2.使用cscope

雖然ctags使用方便快捷,但有時候使用cscope更靈活,首先可以看cscope的協助檔案:

01 cscope 命令:
02 add  :添加一個新的資料庫             (用法: add file|dir [pre-path] [flags])
03 find :查詢一個模式                   (用法: find c|d|e|f|g|i|s|t name)
04 c:找到調用這個函數的函數
05 d:找到被這個函數調用的函數
06 e:找到這個 egrep 模式
07 f:找到此檔案夾
08 g:找到這個定義
09 i:找檔案 #包括這個檔案
10 s:找到這個 C 符號
11 t:找到對其的賦值
12 help :顯示此資訊                     (用法: help)
13 kill :結束一個串連                   (用法: kill #)
14 reset:重設所有串連                   (用法: reset)
15 show :顯示串連                       (用法: show)

通過上面的協助檔案可以發現如果想找到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")
2     cs add cscope.out
3 endif

這樣每次開啟vim就可以直接使用cscope了。

完成以上步驟以後就可以通過vim進行源碼的快速定位了。上述安裝的ctags和cscope都屬於源碼索引工具,因此僅安裝兩者之一也是可以的。不錯,雖然ctags可以快速定位所輸入的標籤,但cscope的使用方法則更靈活。所以兩者同時安裝使用起來更方便。下面是一些簡單的使用方法,僅供參考。

1.使用ctags

ctags的使用特別簡單,首先進入源碼目錄下,開啟vim編輯器,在命令模式下輸入:tag tag_name 按斷行符號即可。通常tag_name可以是結構體名稱,函數名稱,宏變數名稱等。通常輸入上述命令後,因為找到的標籤並不唯一,所以還需要配合使用下述命令:

tfirst:跳至第一個

tnext:跳至下一個

tlast:跳至最後一個

2.使用cscope

雖然ctags使用方便快捷,但有時候使用cscope更靈活,首先可以看cscope的協助檔案:

01 cscope 命令:
02 add  :添加一個新的資料庫             (用法: add file|dir [pre-path] [flags])
03 find :查詢一個模式                   (用法: find c|d|e|f|g|i|s|t name)
04 c:找到調用這個函數的函數
05 d:找到被這個函數調用的函數
06 e:找到這個 egrep 模式
07 f:找到此檔案夾
08 g:找到這個定義
09 i:找檔案 #包括這個檔案
10 s:找到這個 C 符號
11 t:找到對其的賦值
12 help :顯示此資訊                     (用法: help)
13 kill :結束一個串連                   (用法: kill #)
14 reset:重設所有串連                   (用法: reset)
15 show :顯示串連                       (用法: show)

通過上面的協助檔案可以發現如果想找到request_irq函數的定義處代碼,即可使用這個命令:cs find g request_irq來進行尋找。大多數情況下尋找的結果並不唯一,因為需要在多個結果中通過標頭檔來繼續查看。

通常是先通過cscope大致定位到標頭檔,再通過ctags在該標頭檔中詳細定位。其實這兩種工具並不局限於上述用法,更多用法可以再深入使用的過程中慢慢摸索,而且配合Regex等效果會更好。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.