工具
分析源码,首先对工具的准备很重要,在windows有阅读源码的利器source insight,但是由于我的日常系统是centos,并且不想在虚拟机下进行分析,所以找了一些linux阅读源码的工具。
我使用的主要工具是:ctags+cscope
接下来我简单介绍一下这些工具的使用
ctags的使用
在源码根目录执行ctags -R命令,递归的为源码建立tags,在根目录会生成一个Tags的文件,存放各种函数和变量的tag。
让光标停在函数/变量上,ctrl + ]即可跳转到定义处,ctrl + t可以回到你跳转前的位置。
如果文件太多了,用这个可能不太好使了。所以下面推荐cscope(一般是内建的)
cscope的使用
在源码根目录运行cscope -Rbq,就会生成cscope.out文件(索引数据库)
- R:在生成索引文件时,搜索子目录树中的代码
- b:只生成索引文件,不进入cscope的界面
- q:生成cscope.in.out文件和cscope.po.out文件,加快cscope索引速度
在vim中执行cs add cscope.out添加数据库
接下来查询命令:cs find s var(x代表查询选项,var表示要查找的函数/变量名)
大致有以下8种查询方式:
- s:查找C语言符号,即查找函数名、宏、枚举值出现的地方
- g:查找函数、宏、枚举等定义的位置
- d:查找本函数调用的函数
- c:查找调用本函数的函数
- t:查找指定的字符串
- e:查找egrep模式
- f:查找并打开文件
- i:查找包含本文件的文件
参考资料
主要参考了官方的文档http://www.wangafu.net/~nickm/libevent-book/
以及 http://blog.youkuaiyun.com/sparkliang 这系列的博客

本文介绍在Linux环境下使用ctags和cscope进行源码阅读的方法。通过ctags建立tags文件,方便快速定位函数和变量;cscope则用于创建索引数据库,支持多种查询方式,如查找函数定义位置、调用关系等。
934

被折叠的 条评论
为什么被折叠?



