- Introduction
最近在使用ctag+tagtree,總覺得哪裡有點美中不足,
因為ctag沒有辦法列出誰有呼叫這個函數的功能,
所以後來就混著使用cscope用。
List
~~~~~~~~~~~~~~~~~以下是正文~~~~~~~~~~~~~~~~
下載完tarball以後,解壓縮,編譯並安裝:
- tar -zvxf cscope.tar.gz
- cd cscope
- ./configure
- make
- sudo make install
在要產生資料庫的根目錄下:
- cscope -Rbq
之後會產生3個檔案
- cscope.in.out
- cscope.out
- cscope.po.out
因為我只會用到「尋找誰呼叫這個函數」這個功能,所以將這個功能加入快捷鍵:
打開~/.vimrc
- vim ~/.vimrc
加入以下這一行:
- nnoremap <C-c> :cs find c <C-R>=expand("<cword>")<CR><CR>
這樣以後只要在command mode直接按「ctrl+c」,就會直接顯示呼叫這個函數的函數了!
假設要修改一支usb 滑鼠的driver,
- vim drivers/hid/usbhid/usbmouse.c
進入vim 的command mode以後,輸入:
- :cs add ./cscope.out ./
輸入
- :cs find g input_report_key
然後就會跳到定義去了。
輸入
- :cs find c input_report_key
出現如下畫面:
可以清楚看到,哪個檔案的第幾行,哪個函數裏面去呼叫的。
找到你要找的檔案後,按「q」,然後輸入你要選擇的tag number以後,就會進入那個檔案了。
清楚的看到,語法基本上就是:
cscope find c | d | e | f | g | i | s | t name的結合,
底下是說明:
- 0 或 s 尋找這個C符號
- 1 或 g 尋找這個函數定義
- 2 或 d 尋找這個函數呼叫的函數
- 3 或 c 尋找誰呼叫這個函數
- 4 或 t 尋找這個字串
- 6 或 e 尋找這個egrep pattern
- 7 或 f 尋找這個文件
- 8 或 i 尋找包含這個文件的文件
有需要的話就請自己在加入.vimrc裏面當快捷鍵。
No comments:
Post a Comment