之前上驅動程式課程的時候,老師有稍微提到過ctags的使用方法,但是由於上課的Code都沒有大到需要用這些工具,所以也很快的就遺忘了。一直到工作後,聽到小個兒師父再次提起ctags以及cscope是很好用的trace工具,我才認真的去考慮使用它。
Vim
Vim一直是我是最愛使用的編輯器,不然拿著滑鼠複製貼上實在是很麻煩...
但是由於Ubuntu預設安裝的vim是簡易版,沒有顏色那些,所以要我習慣會抓完整的來使用
#apt-get install vim-full
Ctags
Ctags會建立搜尋點,他會把原始碼內的函式名稱以及各種變數紀錄位置。使用上,只要把游標放在要搜尋的函式或者變數上,按 Ctrl+] 就會跳到函式或者變數的定義位置,按 Ctrl+t則是返回。
#apt-get install ctags
到所要建立ctags的目錄下 # ctags -R *,就會產生tags檔。
但是呢,基本上我看的code都還不會很大,所以只要有ctags就很好用了。像小個兒那些要看kernel source的才會比較需要cscope
Cscope
Cscope是我搞比較久,也不太熟悉的東西,學到什麼再補充什麼。
去http://cscope.sourceforge.net/cscope_maps.vim,把cscope_maps.vim抓下來放到/etc/vim/下, 再去修改/etc/vim/vimrc, 多加一行 source /etc/vim/cscope_maps.vim。
例 :
# cd /usr/src/linux
# ctag -R *
# cscope -R
# vi init/main.c, 就可以使用ctags以及cscope的功能
進入vim畫面,輸入:cs show,就可以看到你剛產生的cscope已經跟你的檔案連結。
c: Find functions calling this function (找出使用這個函式的函式)
d: Find functions called by this function (找出這個函式所使用到的函式)
e: Find this egrep pattern
f: Find this file
g: Find this definition (找出定義處, 同ctags的ctrl+])
i: Find files #including this file (列出include此檔案的檔案)
s: Find this C symbol (Symbol, 以此字串當作識別子, 可以搜尋到定義以及引用處 )
t: Find assignments to (找出有包含這個字串的地方)
參考網頁:http://www.gracecode.com/manual/cscope_vim_tutorial_zh.html