cscope

cscope

安裝

原諒我的懶惰
sudo apt-get install cscope

使用

1. 先建立數(shù)據(jù)庫

相當(dāng)于source insight(之后簡稱為SI)的同步

轉(zhuǎn)到目錄里面 cscope -Rbq

參數(shù)解釋:
R recursively
b 只建立數(shù)據(jù)庫(cscope.out),不進(jìn)入cscope
q 建立數(shù)據(jù)庫的同時,同時建立加速文件,使用這個選項紊扬,會在當(dāng)前目錄下產(chǎn)生多個cscope的文件
k 不分析/usr/include下面的文件,用戶態(tài)程序一定不要加上這個符號叼屠,否則沒法知道這個函數(shù)到底是不是一個系統(tǒng)庫函數(shù)

-b Build the cross-reference only.
-C Ignore letter case when searching.
-c Use only ASCII characters in the cross-ref file (don't compress).
-d Do not update the cross-reference.
-e Suppress the <Ctrl>-e command prompt between files.
-F symfile Read symbol reference lines from symfile.
-f reffile Use reffile as cross-ref file name instead of cscope.out.
-h This help screen.
-I incdir Look in incdir for any #include files.
-i namefile Browse through files listed in namefile, instead of cscope.files
-k Kernel Mode - don't use /usr/include for #include files.
-L Do a single search with line-oriented output.
-l Line-oriented interface.
-num pattern Go to input field num (counting from 0) and find pattern.
-P path Prepend path to relative file names in pre-built cross-ref file.
-p n Display the last n file path components.
-q Build an inverted index for quick symbol searching.
-R Recurse directories for files.
-s dir Look in dir for additional source files.
-T Use only the first eight characters to match against C symbols.
-U Check file time stamps.
-u Unconditionally build the cross-reference file.
-v Be more verbose in line mode.
-V Print the version number.

TIPS:
建立完畢數(shù)據(jù)庫之后捕透,如果在當(dāng)前目錄再次執(zhí)行cscope唠梨,會使得重新建立數(shù)據(jù)庫,除非兩次執(zhí)行cscope的參數(shù)一致柒昏!

2. 直接使用使用cscope

當(dāng)前目錄下執(zhí)行cscope -Rq(k) 不加-b 參數(shù)即可進(jìn)入cscope

3. vim下使用cscope

3.1 vim中添加cscope數(shù)據(jù)庫文件

cs add /path/to/cscope.out [prepend path ] -C
-C 指的是查找的時候忽略大消息
[prepend path] 作用不確定

cs show
可以查看已經(jīng)加入的數(shù)據(jù)庫文件

cs kill
刪除一個數(shù)據(jù)庫

3.2 vim中搜索符號

cs find * symbol 等同于 cs f g symbol
查找symbol凳宙,

其中 * 可以是一下選項之一:
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
i: Find files #including this file
s: Find this C symbol
t: Find assignments to

3.3 vim中使用快捷鍵

如果每次我沒都輸入"cs f g symbol",豈不是會累死昙楚?
cscope能不能像SI那樣 ctrl + 鼠標(biāo)左鍵 直接到達(dá)符號定義的地方近速?

cscope提供了一組快捷鍵,將下面的配置寫入~/.vimrc文件下就可以了

nmap <C-@>s :cs find s <C-R>=expand("<cword>")<CR><CR>
nmap <C-@>g :cs find g <C-R>=expand("<cword>")<CR><CR>
nmap <C-@>c :cs find c <C-R>=expand("<cword>")<CR><CR>
nmap <C-@>t :cs find t <C-R>=expand("<cword>")<CR><CR>
nmap <C-@>e :cs find e <C-R>=expand("<cword>")<CR><CR>
nmap <C-@>f :cs find f <C-R>=expand("<cword>")<CR><CR>
nmap <C-@>i :cs find i ^<C-R>=expand("<cword>")<CR>$<CR>
nmap <C-@>d :cs find d <C-R>=expand("<cword>")<CR><CR>
使用上面的快捷鍵的方法是堪旧,將光標(biāo)定位到你要查找的變量削葱,函數(shù)名或者宏定義名處。先按下Ctrl+@淳梦,松開后快速按下相應(yīng)的鍵析砸,比如按下g,表示查找該函數(shù)或者變量的定義爆袍;按下c表示查找本函數(shù)被調(diào)用的地方首繁。功能很強大。

3.4 vim中的跳轉(zhuǎn)

ctrl+]:在函數(shù)調(diào)用的地方跳轉(zhuǎn)到函數(shù)定義的地方
ctrl+t:返回上一個查找的地方

3.5 cscope的vim建議配置

   if has("cscope")
            set csprg=/usr/local/bin/cscope
            set csto=0
            "find cscope db prior
            set cst
            " use cstags
            set nocsverb
            " add any database in current directory
            if filereadable("cscope.out")
                cs add cscope.out
            " else add database pointed to by environment
            elseif $CSCOPE_DB != ""
                cs add $CSCOPE_DB
            endif
            set csverb
    endif

這里面有很多vim的技巧

http://easwy.com/blog/archives/automatically_update_ctags_tag_cscope_database/

在 vim 中使用 cscope 時陨囊, : cs f s symbol-name 或相應(yīng)的快捷鍵執(zhí)行后當(dāng)前窗口就跳轉(zhuǎn)到引用該符號的位置弦疮。
如果想跳轉(zhuǎn)的同時打開一個新的窗口,可以使用如下命令:
: scs f s symbol-name
這里的 scs 應(yīng)該是 split 的意思蜘醋。
另外胁塞,上面這個命令是將窗口橫向分割,如果要縱向分割的話压语,可以使用如下命令:
: vert scs f s symbol-name
另外可以在 .vimrc 里追加對應(yīng)的快捷鍵:
參考 help cscope:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末啸罢,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子胎食,更是在濱河造成了極大的恐慌扰才,老刑警劉巖,帶你破解...
    沈念sama閱讀 223,126評論 6 520
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件厕怜,死亡現(xiàn)場離奇詭異衩匣,居然都是意外死亡,警方通過查閱死者的電腦和手機粥航,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,421評論 3 400
  • 文/潘曉璐 我一進(jìn)店門舵揭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人躁锡,你說我怎么就攤上這事≈檬蹋” “怎么了映之?”我有些...
    開封第一講書人閱讀 169,941評論 0 366
  • 文/不壞的土叔 我叫張陵拦焚,是天一觀的道長。 經(jīng)常有香客問我杠输,道長赎败,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,294評論 1 300
  • 正文 為了忘掉前任蠢甲,我火速辦了婚禮僵刮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鹦牛。我一直安慰自己搞糕,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 69,295評論 6 398
  • 文/花漫 我一把揭開白布曼追。 她就那樣靜靜地躺著窍仰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪礼殊。 梳的紋絲不亂的頭發(fā)上驹吮,一...
    開封第一講書人閱讀 52,874評論 1 314
  • 那天,我揣著相機與錄音晶伦,去河邊找鬼碟狞。 笑死,一個胖子當(dāng)著我的面吹牛婚陪,可吹牛的內(nèi)容都是我干的族沃。 我是一名探鬼主播,決...
    沈念sama閱讀 41,285評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼近忙,長吁一口氣:“原來是場噩夢啊……” “哼竭业!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起及舍,我...
    開封第一講書人閱讀 40,249評論 0 277
  • 序言:老撾萬榮一對情侶失蹤未辆,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后锯玛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體咐柜,經(jīng)...
    沈念sama閱讀 46,760評論 1 321
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,840評論 3 343
  • 正文 我和宋清朗相戀三年攘残,在試婚紗的時候發(fā)現(xiàn)自己被綠了拙友。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,973評論 1 354
  • 序言:一個原本活蹦亂跳的男人離奇死亡歼郭,死狀恐怖遗契,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情病曾,我是刑警寧澤牍蜂,帶...
    沈念sama閱讀 36,631評論 5 351
  • 正文 年R本政府宣布漾根,位于F島的核電站,受9級特大地震影響鲫竞,放射性物質(zhì)發(fā)生泄漏辐怕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,315評論 3 336
  • 文/蒙蒙 一从绘、第九天 我趴在偏房一處隱蔽的房頂上張望寄疏。 院中可真熱鬧,春花似錦僵井、人聲如沸陕截。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,797評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽艘策。三九已至,卻和暖如春渊季,著一層夾襖步出監(jiān)牢的瞬間朋蔫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,926評論 1 275
  • 我被黑心中介騙來泰國打工却汉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留驯妄,地道東北人。 一個月前我還...
    沈念sama閱讀 49,431評論 3 379
  • 正文 我出身青樓合砂,卻偏偏與公主長得像青扔,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子翩伪,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,982評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 本文非原創(chuàng)微猖,引用自:http://easwy.com/blog/archives/advanced-vim-ski...
    1angxi閱讀 9,084評論 0 2
  • 今晚看了一個關(guān)于解決家庭糾紛的視頻凛剥,在此視頻中,嘉賓對一個出于單親家庭的男人給其母親幫他保管錢的事質(zhì)問那位母親:是...
    夢里行閱讀 147評論 0 0
  • 事實上轻姿,養(yǎng)成任何非天生的習(xí)慣犁珠,都是需要掙扎才能做成的事情。我們只有一個習(xí)慣是天生的——“懶惰”互亮。對每個人來說犁享,懶惰...
    沈姐說說閱讀 218評論 5 9
  • 今天中午語文課,老師讓我們用一個半小時寫作文豹休,說放學(xué)的時候要加齊炊昆,然而作為組長的我卻是我們組最后一個交的!還拖到了...
    牧羊人的女兒閱讀 167評論 0 1
  • 一 浙大法學(xué)院所在地叫“之江校區(qū)”,坐落在一個叫月輪山的山腰上窑眯。從此往前一站是九溪屏积,往后一站是六和塔,瀕臨錢塘江磅甩,...
    以一圣真閱讀 2,662評論 4 9