登錄      注冊
 找回密碼

QQ登錄

只需一步,快速開始

查看: 2814|回復: 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好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 支持支持 反對反對
沙發
發表于 2019-11-28 09:38:15 | 只看該作者
有這么厲害嗎?

QQ|網站地圖|Archiver|手機版|巨力網賺論壇 ( 京ICP備05085363號-1

GMT+8, 2020-1-15 07:12

Powered by Discuz! X3.3

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表
三肖中特期期准白小姐