CScope for programmer

来源:互联网 发布:城市信用监测指数算法 编辑:程序博客网 时间:2024/06/04 18:33
http://bbs.sjtu.edu.cn/bbs0an,path,%2Fgroups%2FGROUP_3%2FGNULinux%2FSoftware%2FD95E89182%2FD5277E56B.html
8、Cscope 的使用    这下更厉害了, 用Cscope自己的话说 - "你可以把它当做是超过频的ctags", 其功能和强大程度可见一斑吧, 关于它的介绍我就不详细说了, 如果你安装好了前文介绍的中文帮助手册, 用下面的命令看看介绍吧:        :help if_cscop.txt     我在这里简单摘抄一点, 供还在犹豫的朋友看看:    Cscope 是一个交互式的屏幕下使用的工具,用来帮助你:        * 无须在厚厚的程序清单中翻来翻去就可以认识一个 C 程序的工作原理。        * 无须熟悉整个程序就可以知道清楚程序 bug 所要修改的代码位置。        * 检查提议的改动 (如添加一个枚举值) 可能会产生的效果。        * 验证所有的源文件都已经作了需要的修改;例如给某一个现存的函数添          加一个参数。        * 在所有相关的源文件中对一个全局变量改名。        * 在所有相关的位置将一个常数改为一个预处理符号。    它被设计用来回答以下的问题:        * 什么地方用到了这个符号?        * 这是在什么地方定义的?        * 这个变量在哪里被赋值?        * 这个全局符号的定义在哪里?        * 这个函数在源文件中的哪个地方?        * 哪些函数调用了这个函数?        * 这个函数调用了哪些函数?        * 信息 "out of space" 从哪来?        * 这个源文件在整个目录结构中处于什么位置?        * 哪些文件包含这个头文件?    安装Cscope:    如果你的系统中有cscope命令, 则可以跳过这一小段, 如果没有, 就先跟着我一起安装一个吧.    在Cscope的主页: http://cscope.sourceforge.net下载一个源码包, 解压后编译安装:        # ./configure        # make        # make install       // 需要root权限      先在~/vimrc中增加一句:        :set cscopequickfix=s-,c-,d-,i-,t-,e-     这个是设定是否使用 quickfix 窗口来显示 cscope 结果, 用法在后面会说到。    跟Ctags一样, 要使用其功能必须先为你的代码生成一个cscope的数据库, 在项目的根目录运行下面的命令:        $ cd /home/wooin/vim71/        $ cscope -Rbq        # 此后会生成三个文件        $ ll cscope.*        -rw-rw-r-- 1 wooin wooin 1.1M 2007-09-30 10:56 cscope.in.out        -rw-rw-r-- 1 wooin wooin 6.7M 2007-09-30 10:56 cscope.out        -rw-rw-r-- 1 wooin wooin 5.1M 2007-09-30 10:56 cscope.po.out        # 打开文件, 开始Coding        $ cd src        $ vi main.c     进入vim后第一件事是要把刚才生成的cscope文件导入到vim中来, 用下面的命令:        :cs add /home/wooin/vim71/cscope.out /home/wooin/vim71     上面这条命令很重要, 必须写全, 不能只写前半句:        :cs add /home/wooin/vim71/cscope.out    因为源码是多级目录的, 如果这样写, cscope是无法在子目录中的源码中工作的, 当然, 如果你的源码都在同一级目录中就无所谓了. 如果你要经常用cscope的话, 可以把上面那句加到~/.vimrc中去.    下面我们来操练一下, 查找函数vim_strsave()的定义, 用命令:        :cs find g vim_strsave         (--- 图8 ---)    按下回车后会自动跳转到vim_strsave()的定义处. 此时你肯定会说Ctags也可以做到这个呀, 那么下面说的这个Ctags就无法做到了, 我想查找vim_strsave()到底在那些地方被调用过了, 用命令:        :cs find c vim_strsave     按下回车后vim会自动跳转到第一个符合要求的地方, 并且在命令栏显示有多少符合要求的结果, 如图:        (--- 图9 ---)    如果自动跳转的位置你不满意, 想看其他的结果, 可以用下面的命令打开QuickFix窗口:        :cw     如图:        (--- 图10 ---)    这时你就可以慢慢挑选了^_^    cscope的主要功能是通过同的子命令"find"来实现的    "cscope find"的用法:    cs find c|d|e|f|g|i|s|t name    0 或 s   查找本 C 符号(可以跳过注释)     1 或 g   查找本定义     2 或 d   查找本函数调用的函数     3 或 c   查找调用本函数的函数     4 或 t   查找本字符串     6 或 e   查找本 egrep 模式     7 或 f   查找本文件     8 或 i   查找包含本文件的文件     如果每次查找都要输入一长串命令的话还真是件讨人厌的事情, Cscope的帮助手册中推荐了一些快捷键的用法, 下面是其中一组, 也是我用的, 将下面的内容添加到~/.vimrc中, 并重启vim:        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>     当光标停在某个你要查找的词上时, 按下<C-_>g, 就是查找该对象的定义, 其他的同理.    按这种组合键有一点技巧,按了<C-_>后要马上按下一个键,否则屏幕一闪就回到nomal状态了    <C-_>g的按法是先按"Ctrl+Shift+-", 然后很快再按"s"    很奇怪, 其中的这句:        nmap <C-_>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>    在我的vim中无法工作, 但是我改成:        nmap <C-_>i :cs find i <C-R>=expand("<cfile>")<CR><CR>    就可以正常工作了, 不知道是什么原因? 有哪位朋友知道请告诉我.    cscope的其他功能你可以通过帮助手册自己慢慢学习    reset : 重新初始化所有连接。    用法  : cs reset
http://bbs.sjtu.edu.cn/bbsanc,path,%2Fgroups%2FGROUP_3%2FGNULinux%2FSoftware%2FD95E89182%2FD5277E56B%2FAC4BFB2E3.html
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 俩人打仗了对方想讹我怎么办 环世界模组装多了打不开怎么办 手机百度云视频播放画面太小怎么办 ps文件说数据似乎已经损坏怎么办 百度云中的压缩包下载的很慢怎么办 游戏压缩出现未知错误或损坏怎么办 百度云里的压缩包解压后损坏怎么办 联创打印时显示压缩文件失败怎么办 电脑的软件打开出现未知格式怎么办 图片只突出人物边上全黑怎么办 合金机兵存档密码忘了怎么办 手机网页验证码无法加载插件怎么办 绝地求生次激战场机型不支持怎么办 木茷生存中文版安装包损坏了怎么办 手机下载软件显示安装包损坏怎么办 不小心把qq图片删了怎么办 奶水不足宝宝不好好吸奶怎么办 膀胱切除前列腺切除阴茎不硬怎么办 小孩的睾丸睾丸碰肿了怎么办 怎么判断小孩子的睾丸没下来怎么办 怀孕39周腰酸屁股酸疼该怎么办 我儿子18岁睾丸筋鼓起来怎么办 去医院检查说精子跑的慢怎么办 多囊卵巢综合症引起屁股增大怎么办 蚊子咬了肿了挠破了流水怎么办 血糖高引发的睾丸一直烂怎么办? 被洪水淹过的猪后期怎么办 做睾丸阴囊彩超阴茎突然勃起怎么办 阴茎冠状沟皮肤感染总不愈合怎么办 不小心咬到孩子破皮了怎么办 小孩子不小心碰到脸黑了一块怎么办 眼睛不小心碰到了里面红了怎么办 八个月宝宝睾丸还沒掉下来怎么办 孩子背部皮肤有一块皮肤很脏怎么办 洗浴种心搓背老板不给发工资怎么办 半个月小鸡屁骨下垂眼睛紧闭怎么办 在学校走廊把老师撞倒了怎么办 裤衩给孩子买的有点肥怎么办 到交警队立案后医疗费没了怎么办 交警扣车车里的贵重东西没了怎么办 睾丸内囊肿割了又长怎么办