登录      注册
 找回密码

QQ登录

只需一步,快速开始

查看: 2761|回复: 1

Vim系列-使用 Cscope 阅读源码

[复制链接]
发表于 2019-9-25 09:34:00 | 显示全部楼层 |阅读模式
最近迷上了 Nginx,逐渐接触到源码层面,于是有了阅读 Nginx 源码的需求,业界大名鼎鼎的 Source Insight 太贵,没办法,寻找简单的开源替代方案,于是就使用 Vim + Cscope 来搞了一下,使用下来的感受是搞定日常的读源码需求足够用。


Vim 对 Cscope 的依赖在大多数发行版的 Vim 中都是标配,所以只需要确保 Cscope 软件本身被安装就可以在 Vim 下正常使用。


为了让 Cscope “认识” 一个源码包,首先需要在源码包的根目录下使用


cscope -Rb


命令建立 Cscope 的数据文件 cscope.out,然后就可以在 Vim 里使用这个 cscope.out 文件来浏览这个源码包了。


cscope 最主要的命令有2条


:cs add


用来建立 Vim 和一个具体的 cscope.out 文件之间的联系,后续发出的所有查询都会在这个绑定的 cscope.out 文件里进行。


:cs find





:scs find


用来实施具体的查询。


:scs 和 :cs 命令的唯一区别是在打开一个新窗口展示搜索结果时,:scs 使用分割窗口的方法, 而不是完全覆盖旧窗口的方法。


一共有9种类型,翻译一下分别是:


0 or s:哪里使用了这个 symbol


1 or g:哪里定义了这个 symbol


2 or d:这个方法调用了哪些方法


3 or c:哪些方法调用了这个方法


4 or t:哪里出现了这个字符串


6 or e:哪里出现了这个正则匹配(格式同 egrep)


7 or f:(还没搞明白行为,以后再说)


8 or i:哪里 include 了这个文件


9 or a:哪里为这个 symbol 赋了值


下面说几个场景:


当看到 ngx_http_header_t 这个结构体时,想知道结构体的具体信息,可以使用


:cs find g ngx_http_header_t


查看。当然也可以使用


:cs find s ngx_http_header_t


来查看还有哪里使用到了这个结构体。


当看到 ngx_http_init_phases 这个方法申明时,想查看方法的具体信息,可以使用


:cs find d ngx_http_init_phases


查看(搜索结构中任选一个)。当然也可以使用


:cs find c ngx_http_init_phases


来查看都有哪些地方调用了这个方法。


当想查看 HTTP 头部 X-Real-IP 的处理细节时,可以使用


:cs find t X-Real-IP


来查看。


当看到 ngx_http.h 时候,想查看都有哪些文件 include 了这个文件,可以使用


:cs find i ngx_http.h


来查看。


当想查找变量 ngx_test_config 在哪些地方被赋值时,可以使用


:cs find a ngx_test_config


来查看。


<!--/OL-->


下面逐个演示。
QQ截图20190925093000.png







上一篇:网络赚钱项目之虚拟资源实操解析
下一篇:百度竞价推广怎么扩词?看这篇就够了
发表于 2019-11-28 09:38:15 | 显示全部楼层
有这么厉害吗?

QQ|网站地图|Archiver|手机版|巨力网赚论坛 ( 京ICP备05085363号-1

GMT+8, 2019-12-12 02:50

Powered by Discuz! X3.3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表