學習工具篇 - 還在為尋找合適的源碼工具煩惱嗎?


 這篇博文和前面的篇文章是銜接的,也算是一點點補充吧.

 

在前文中說過關於閱讀源碼可以提高自己的修養~ 對於源碼的閱讀,無非就是選中一個自己認為適合自己的源碼包,

然后去閱讀和學習.這里就有一個問題了,你使用什么樣子的工具閱讀呢?  使用vi? 或者是win下的記事本?

 

雖然很多的源碼都是模塊化開發的,在閱讀的時候選中一個小模塊,然后慢慢琢磨就可以了.但是在源碼閱讀的過程中

總是需要查找的功能的,一般的文本編輯器只能實現在一個文件中的指定查找,功能有限.不過,你也可以使用IDE閱讀

源碼,方法很多,隨自己喜歡吧.其實,我們還是有其他選擇的.

 

解決的辦法是什么呢? emacs/vim會給我們答案.

我已經不使用vim好久了,或者說更多的時間我選擇使用emacs.個人感覺emacs慢慢有節奏的按鍵操作,可以讓我體驗coding

的快樂.那種感覺是vim不能給的,因為vim使用起來有點暴力~

取決於你的選擇,我的建議是:emacs優雅,vim更注重效率.可隨自己喜歡挑選一個.

 

emacs + cscope + xcscope 是源碼閱讀的不錯選擇.配置也相當的簡單.

由於我使用的是ubuntu 12.04 所以配置工作也都是在此環境下面完成的,僅供參考.

sudo apt-get install cscope*

 xcscope是cscope插件的擴展:[link:http://www.emacswiki.org/emacs/xcscope+.el]]

 

 

怎么去結合emacs使用cscope閱讀源碼呢? 先看一下關於xcscope的一些操作說明( 當然,這些說明在emacs的菜單選項中也是有的~ )

 

 1 C-c s s         Find symbol.  
 2 C-c s d         Find global definition.  
 3 C-c s g         Find global definition (alternate binding).  
 4 C-c s G         Find global definition without prompting.  
 5 C-c s c         Find functions calling a function.  
 6 C-c s C         Find called functions (list functions called  
 7                 from a function).  
 8 C-c s t         Find text string.  
 9 C-c s e         Find egrep pattern.  
10 C-c s f         Find a file.  
11 C-c s i         Find files #including a file.  
12   
13 search:  
14 C-c s b         Display *cscope* buffer.  
15 C-c s B         Auto display *cscope* buffer toggle.  
16 C-c s n         Next symbol.  
17 C-c s N         Next file.  
18 C-c s p         Previous symbol.  
19 C-c s P         Previous file.  
20 C-c s u         Pop mark.

 

 

下面就就結合glib的源碼說說如何使用emacs + xcscope+ cscope 組合的使用方法:

 

1. 隨便打開源碼包中的一個文件: 我打開的是glib/glib/gthread.h (我的glib源碼包是使用git clone的,和官網下載的源碼包目錄有點不一樣,請自己注意~)

 

2. 設定初始化目錄,也就是cscope + xcscope插件生成tag的檢測范圍的限定.這可以根據你自己的需求去做,我的選擇是把源碼包設置為初始化目錄. ( C-c s a)

 

3. 為文件生成檢索tag. 一般我會選擇執行兩條命令(C-c s L and  C-c s i)

 

 

 

 有的時候,如果源碼包很大個的話,執行的過程可能需要一些時間,不過還是很快的.

4. 執行完上面的步驟之后,就可以隨意在源碼包中查找關鍵詞了.(C-c s s + key )

 如上圖所示,會幫你查找到所有關鍵詞出現的位置.這時候就是很據你自己的需求進行跳轉.我想,對於辨別查找自己需要的源碼這種能力,還是有的,不會在一大堆tag面前無力~

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM