[Linux] cscope使用个人笔记

$ sudo apt-get install cscope
$ cscope --help
$ Usage: cscope [-bcCdehklLqRTuUvV] [-f file] [-F file] [-i file] [-I dir] [-s dir]
              [-p number] [-P path] [-[0-8] pattern] [source files]

-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.

Please see the manpage for more information.

cscope 常用选项;
-R:         在生成索引文件时,搜索子目录树中的代码;
-b:         只生成索引文件,不进入cscope的界面;
-q:         生成cscope.in.out和cscope.po.out文件,加快cscope的索引速度;
-k:         在生成索引文件时,不搜索/usr/include目录;
-i:         指定源文件来源位置;
-Idir:     在-I选项指出的目录中查找头文件;
-u:         扫描所有文件,重新生成交叉索引文件;
-C:         在搜索时忽略大小写;
-P path: 在以相对路径表示的文件前加上的path; 

:cs find 选项:
s:         查找C语言符号,即查找函数名、宏、枚举值等出现的地方;
g:         查找函数、宏、枚举等定义的位置,类似ctags所提供的功能;
d:         查找本函数调用的函数;
c:         查找调用本函数的函数;
t:         查找指定的字符串;
e:         查找egrep模式,相当于egrep功能,但查找速度快多了;
f:         查找并打开文件,类似vim的find功能;
i:         查找包含本文件的文件;

~/.gvimrc中的配置
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" cscope setting
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
if has("cscope")
  set csprg=/usr/bin/cscope
  set csto=1
  set cst
  set nocsverb
  " add any database in current directory
  if filereadable("cscope.out")
      cs add cscope.out
  endif
  set csverb
endif

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("<cfile>")<CR><CR>
nmap <C-@>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
nmap <C-@>d :cs find d <C-R>=expand("<cword>")<CR><CR>

操作指令:
# 在源代码根目录下输入
$ find . -name "*.[ch]" -o -name "*.cpp" -o -name "*.hpp" > cscope.file
$ cscope -Rbkq
$ gvim <file> #打开一个文件;
$ :cs add cscope.out
$ :cs find g <pattern> #搜索一个宏变量的定义位置;

 

posted @ 2013-03-04 14:27  scue  阅读(1959)  评论(0编辑  收藏  举报