必威电竞|足球世界杯竞猜平台

cscope
來源:互聯網

cscope 是一個C 語言的瀏覽工具,通過這個工具可以很方便地找到某個函數或變量的定義位置、被調用的位置等信息。目前支持 C 和 C++

一、Cscope簡介

cscope 是一個 C 語言的瀏覽工具,通過這個工具可以很方便地找到某個函數或變量的定義位置、被調用的位置等信息。目前支持 C 和 C++。cscope 自身帶一個基于文本的用戶界面,不過 gvim 提供了cscope接口,因此可以在 gvim 中調用 cscope,方便快捷地瀏覽源代碼。

Cscope是一個類似ctags的工具。你可以把它想作是超過頻的ctags,因為它功能比ctags強大很多。在 VIM里,通過cscope查詢結果來跳轉就象跳轉到其他的標簽完全一樣;它被保存在標簽棧里。這樣你就可以象使用tags一樣在函數等等之間便捷的跳轉。在VIM中使用cscope非常簡單,首先調用“cscopeadd”命令添加一個cscope數據庫,然后就可以調用“cscopefind”命令進行查找了。VIM支持8種cscope的查詢功能,如下:例如,我們想在代碼中查找調用work()函數的函數,我們可以輸入:“:csfind c work”,回車后發現沒有找到匹配的功能,可能并沒有函數調用work()。我們再輸入“:csfind swork”,查找這個符號出現的位置,現在VIM列出了這個符號出現的所有位置。我們還可以進行字符串查找,它會雙引號或單引號括起來的內容中查找。還可以輸入一個正則表達式,這類似于egrep程序的功能。

二、Cscope 使用

2.1、Cscope安裝

2.1.1 軟件下載

下載地址

2.1.2 軟件安裝:

./configure --with-flex (注:如果平臺是Linux,最好帶上 --with-flex選項)

make (注:我沒有遇到錯誤)

make install (注:直接安裝好了)

PS.在Ubuntu中打開終端使用命令行安裝再簡單不過: sudo APT install vim

2.2、Cscope配置

VIM 配置文件 vimrc. 你可以修改/etc/vimrc使用所有用戶都使用本配置文件,當然你還可以修改~/.vimrc 下載配置文件:cscope_map.vim 把cscope_map.vim里從 if has("cscope") 到 endif里邊的內容復制到/etc/vimrc里邊去里邊的命令意思請看下邊文章

2.3、Cscope 使用

2.3.1、建立cscope使用的索引文件

2.3.1.1 在你需要瀏覽源碼的根目錄下(如你想用cscope看Linux源碼)使用下面命令:

#: cscope -Rbkq<回車>

2.3.1.2 R 表示把所有子目錄里的文件也建立索引

2.3.1.3 b 表示cscope不啟動自帶的用戶界面,而僅僅建立符號數據庫

2.3.1.4 q 生成cscope.in.out和cscope.po.out文件,加快cscope的索引速度

2.3.1.5 k 在生成索引文件時,不搜索/usr/include目錄

2.3.2、使用cs find 查找(也可以簡化寫成 cs f)后面添加需要得字符串類型:

c:Find functions calling this function//查找調用本函數的函數

d:Find functions called by this function //查找本函數調用的函數

e:Find this egrep pattern//查找egrep模式,相當于egrep功能,但查找速度快多了

f:Find this file //查找并打開文件,類似VIM的find功能

g:Find this definition//查找函數、宏、枚舉等定義的位置,類似ctags的功能

i:Find files #including this file //查找包含本文件的文件

s:Find this C symbol //查找c語言符號,即查找函數名、宏、枚舉值等出現的地方

t:Find assignments to //查找指定的字符串

例如:使用cscope查找do_fork函數的定義,在vim命令行下執行 :cs f g do_fork

2.3.3上面所有命令也可以配合按鍵及來實現

2.3.2.3.1 Ctrl+\ 再按 s 表示:cs find s命令

2.3.1.3.2 理實現cs find + g,d,c,t,e,f,i命令

2.3.2.4 Cscope_map.vim說明:

2.3.2.4.1、有英文注釋的我就不說明了,我就說一下里邊的鍵 map 映射

2.3.2.4.2、如: Nmap s :cs find s =expand("")

2.3.2.4.2.1 nmap 表示在VIM的普通模式下,即相對于:編輯模塊和可視模式,以下是幾種模式

:map 普通,可視模式及操作符等待模式

:vmap 可視模式

:omap 操作符等待模式

:map! 插入和命令行模式

:imap 插入模式

:cmap 命令行模式

2.3.2.4.2.2 表示:Ctrl+\ s表示輸入(即按:s) s

2.3.2.4.2.3 : 表示輸入':'

2.3.2.4.2.4 “cs find s"表示輸入"cs find s"也即是要輸入的命令

2.3.2.4.2.5 =expand("cword")總體是為了得到:光標下的變量或函數。cword 表示:cursor word, 類似的還有:cfile表示光標所在處的文件名吧

2.3.2.4.2.6 就是回車吧,不太清楚

參考資料 >

生活家百科家居網