2、執行cscope
執行cscope命令,出現兩個面板,上方是乙個查詢結果的顯示面板,下方是乙個查詢條件指定面板。使用tab鍵在兩個面板間切換,也可使用上下左右方向件和翻頁鍵在同一面板內貼換位置。選中顯示面板的某個項,回車即可進入該檔案,這是呼叫vim開啟檔案,這時就可以結合ctags使用了。當然也可以直接使用vim開啟檔案,結合ctags閱讀原始碼。使用前,必須現使用「cscope-indexer -r」命令遞迴生成索引資訊檔案。特殊情況下,還需要使用者使用find命令,主動生成索引資訊檔案,並指定給cscope工具。 cscope提供了如下九種查詢方式:
find this c symbol:
#查詢指定的c符號
find this global definition:
#查詢指定的全域性定義
find functions called by this function:
#查詢指定函式呼叫的函式
find functions calling this function:
#查詢呼叫指定函式的函式
find this text string:
#查詢字串
change this text string:
#修改指定字串
find this egrep pattern:
#查詢匹配字元
find this file:
#查詢指定檔案
find files #including this file:
#指定引用標頭檔案進行查詢
使用「ctrl +d"退出cscope!
3、應用例項:
$ wget
$ tar xvfj linux-2.6.27.6.tar.bz2
#解壓檔案
$ cd linux-2.6.27.6
#進入源**根目錄
$ ctags -r
#遞迴生成標籤檔案
$ cscope-indexer -r
#遞迴生成索引資訊檔案
$ cscope
#使用cscope閱讀原始碼
標籤檔案、索引資訊檔案只需要第一次或者**發生變動時生成,以後使用直接執行cscope即可。
首先需要為你的**生成乙個cscope資料庫。生成資料庫很簡單,在你的專案根目錄執行下面的命令:
cscope -rbq
如果不是c**,使用:
$ find ./ -name "*.c" -or -name "*.h" -or -name "*.cpp" -or -name "*.s" | cscope -rbq
這個命令會生成三個檔案:cscope.out, cscope.in.out, cscope.po.out。其中cscope.out是基本的符號索引,後兩個檔案是使用"-q"選項生成的,可以加快cscope的索引速度。
具體的引數的含義可以通過:man cscope 得到。-r: 在生成索引檔案時,搜尋子目錄樹中的**
-b: 只生成索引檔案,不進入cscope的介面
-q: 生成cscope.in.out和cscope.po.out檔案,加快cscope的索引速度
-k: 在生成索引檔案時,不搜尋/usr/include目錄
-i: 如果儲存檔案列表的檔名不是cscope.files時,需要加此選項告訴cscope到哪兒去找原始檔列表。可以使用「-」,表示由標準輸入獲得檔案 列表。
-i dir: 在-i選項指出的目錄中查詢標頭檔案
-u: 掃瞄所有檔案,重新生成交叉索引檔案
三在vim中使用cscope
1 、用vim編輯的時候:
vim filename.c
2 把生成的cscope檔案匯入到vim中來
:cs add /路徑/cscope.out **所在目錄
我習慣現切換到**所在目錄再操作,所以直接使用:
:cs add cscope.out 就可以了。
3 檢視是否已經連線到對應資料庫
:cs s
4 cs f s ***x 查詢***x出現的地方,它能詳細列出哪些檔案的哪行的哪個函式引用,以及該行的內容.
,首先呼叫「cscope add」命令新增乙個cscope資料庫,然後就可以呼叫「cscope find」命令進行查詢了。vim支援8種cscope的查詢功能,如下:例如,我們想在**中查詢呼叫work()函式的函式,我們可以輸入:「:cs find c work」,回車後發現沒有找到匹配的功能,可能並沒有函式呼叫work()。我們再輸入「:cs find s work」,查詢這個符號出現的位置,現在vim列出了這個符號出現的所有位置。我們還可以進行字串查詢,它會雙引號或單引號括起來的內容中查詢。還可 以輸入乙個正規表示式,這類似於egrep程式的功能。
s: 查詢c語言符號,即查詢函式名、巨集、列舉值等出現的地方
g: 查詢函式、巨集、列舉等定義的位置。
cs f g main 游標跳到main函式的位置
d: 查詢本函式呼叫的函式
cs f d main 列出main函式呼叫的函式,輸入函式所對應的數字,就可以調到相應掉用的函式
c: 查詢呼叫本函式的函式
cs f c main 會輸出找到沒有匹配的結果,因為沒有函式呼叫main函式
t: 查詢指定的字串
cs f t string
f: 查詢並開啟檔案
還有在.vimrc下面加上了鍵盤對映
map :tlist
這樣就可以使用快捷鍵f8直接進入tlist模式了。這裡注意和 : 之間有空格的。
在.vimrc 下加入一下兩行
set tags=tags;
set autochdir
這樣使用tags時可以首先在當前目錄下查詢tags文 件,如果沒有則轉到父目錄查詢。依次向上。
4、安裝cscope.vim執行指令碼
emacs新增cscope外掛程式
首先安裝cscope,我用的raspbian,命令為 apt get install cscope 改檔案位於,原始碼根目錄的 contrib xcscope 目錄下。修改 emacs新增如下內容 add to list load path expand file name emacs.d plug...
VIM快捷更新cscope和ctags
主要就是記錄一下linux下vim關於cscope更新資料庫的配置。平時使用cscope ctags的時候檢視 還是比較方便的,但是編輯檔案的時候就比較雞肋了,原因在於cscope和ctags沒有整合自動更新,其實這些在配置檔案中新增簡單的幾句話就能實現了,筆者經過測試,認為在大專案中cscope增...
vim中cscope工具安裝與使用
cscope是類似於ctags一樣的工具,但可以認為她是ctags的增強版,因為她比ctags能夠做更多的事。在vim中,通過cscope的查詢,跳轉到指定的地方就像跳轉到任何標籤 她能夠儲存標籤棧,所以通過合適的鍵盤對映繫結,你能夠在函式向後或向前跳轉,就像通常使用的tags一樣。cs f s 查...