Linux平台下阅读源码的工具链
作者:网络转载 发布时间:[ 2016/5/24 11:33:08 ] 推荐标签:操作系统 Linux
前言
看源代码是一个程序员必须经历的事情,也是可以提升能力的一个捷径.个人认为:要完全掌握一个软件的方法只有阅读源码。
在Windows下有sourceinsight这个源码阅读软件(虽然我没用过,但是网上评价还不错),由于我是个Linuxer,并不喜欢用Windows,所以自然是选择在Linux下阅读源码的工具了.
下面我将逐一介绍在Linux下阅读源码的工具.
vim+ctags+cscope
源码阅读三剑客.vim配合ctags和cscope,足以在源代码里面自由翱翔,在函数和变量间自由跳转.
安装
sudoapt-getinstallvimctagscscope
使用
vim
vim的使用略过了,网上资料很多,不是一篇文章能说完的,未来我可能会写一篇vim的使用心得。推荐一篇《简明Vim练级攻略》,看完差不多会用了.
ctags
ctags的使用很简单,vim已经内置了对ctags的支持
首先在源代码根目录执行ctags-R,递归的为源码建立tags,在根目录会生成一个Tags的文件,存放各种函数和变量的tag,便于跳转
使光标在函数或变量上,Ctrl+]即可跳转到其定义处
Ctrl+t可以回到你跳转之前的位置
对于简单的代码,ctags够用了,但是对于比较复杂的代码来说,ctags显得有点力不从心,于是,下一位剑客登场了.
cscope
vim同样内置了对cscope的支持.
首先在源代码根目录执行cscope-Rbq,会生成cscope.out文件(索引数据库)
-R:在生成索引文件时,搜索子目录树中的代码
-b:只生成索引文件,不进入cscope的界面
-q:生成cscope.in.out和cscope.po.out文件,加快cscope的索引速度
然后在vim中执行:csaddcscope.out,添加数据库.
接下来可以使用:csfindxvar进行查找.(x代表查询选项,var表示要查找的函数或变量名)
cscope支持8种查询方式
s:查找C语言符号,即查找函数名、宏、枚举值等出现的地方
g:查找函数、宏、枚举等定义的位置,类似ctags所提供的功能
d:查找本函数调用的函数
c:查找调用本函数的函数
t:查找指定的字符串
e:查找egrep模式,相当于egrep功能,但查找速度快多了
f:查找并打开文件,类似vim的find功能
i:查找包含本文件的文件
例如,我们想在vim7.0的源代码中查找调用do_cscope()函数的函数,我们可以输入:”:csfindcdo_cscope“,回车后发现没有找到匹配的功能,可能并没有函数调用do_cscope()。我们再输入”:csfindsdo_cscope“,查找这个C符号出现的位置,现在vim列出了这个符号出现的所有位置。
每次都有输入csfind来查找数据是不是有点麻烦,有没有更方便的方法呢.当然有,vim的神奇之处在其可定制性.提供一份cscope的配置,将其放在.vimrc中即可.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"cscopesetting
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
ifhas("cscope")
setcsprg=/usr/bin/cscope
setcsto=1
setcst
setnocsverb
"addanydatabaseincurrentdirectory
iffilereadable("cscope.out")
csaddcscope.out
endif
setcsverb
endif
nmap<C-@>s:csfinds<C-R>=expand("<cword>")<CR><CR>
nmap<C-@>g:csfindg<C-R>=expand("<cword>")<CR><CR>
nmap<C-@>c:csfindc<C-R>=expand("<cword>")<CR><CR>
nmap<C-@>t:csfindt<C-R>=expand("<cword>")<CR><CR>
nmap<C-@>e:csfinde<C-R>=expand("<cword>")<CR><CR>
nmap<C-@>f:csfindf<C-R>=expand("<cfile>")<CR><CR>
nmap<C-@>i:csfindi^<C-R>=expand("<cfile>")<CR>$<CR>
nmap<C-@>d:csfindd<C-R>=expand("<cword>")<CR><CR>
上面的配置即把Ctrl+@作为:csfind的快捷键,也是说要查找某个函数名,只需要把光标放在函数名上,按下Ctrl+@+s即可,简直不能更方便.而且你可以自己修改配置,映射到自己觉得舒服的快捷键上.
本着不重复造轮子的原则,我简单的写了cscope的基本用法,其实基本上够用了,进阶的用法参考这篇文章vi/vim使用进阶:程序员的利器–cscope
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11