2012年11月2日 星期五

Trace code in Linux - cscope

嘛,總之有了追code的需求
自然得去找出一些工具

 看看這cscope+vim的組合在linux下好像還滿主流的
 就try try 看囉

官網
http://cscope.sourceforge.net/

 在ubuntu12.04下
安裝
    sudo apt-get install cscope

 使用上第一步是要創立"cscope的資料庫"
大概分成兩種case
     1.簡單的情況
         在project的跟目錄下直接下 cscope -R 就直接將所有的檔案建立資料
     2.但是,有些時候我們並不需要所有的file
        這時候就要先建立一個list,讓cscope只對裡面的檔案建立資料
        如果我們只要目錄中的java檔時,就使用 find . -name '*.java' > cscope.files
        再 cscope -b -q -k  就可以建立資料
        在複雜的project中可以藉由更複雜則filter來減少我們的目標(如linux kernel)

接著就可以使用 cscope -d  進入cscope的世界(?)了
想要找什麼definition、function...的就隨心所欲了
啊  然後上下畫面的些換是用tab
一開始傻傻地把鍵盤上的按鍵都摸了一遍orz

不過這樣其實還是麻煩
因為看完後 想到要找什麼得跳出來再找
這點就要靠vim了
再ubuntu12.04裡的vim預設就有支援cscope
可以直接在vim底下輸入 :cs  XXXXX   就可以使用cscope了
不知道指令的話  只輸入 :cs  就說明得很清楚了

但是  這樣其實還是很麻煩
查什麼都要打一大堆字
這時我們就需要vim的cscope plugin
直接從官網上抓下來用就OK了
在 ~/.vim/plugin 下 輸入 wget http://cscope.sourceforge.net/cscope_maps.vim
(plugin的路徑和vim但設置有關)
那就支援一票(?)快捷鍵了

http://rickey-nctu.blogspot.tw/2009/02/vim-srcexpl.html
Ctrl+\ s "s表Symbol,列出所有參考到游標所在字串的地方,包含定義和呼叫。
ctrl+\ g "g表Global,與ctags的Ctrl+]相同。
ctrl+\ c "c表Call,列出所有以游標所在字串當函數名的地方。
ctrl+\ t "t表Text,列出專案中所有出現游標所在字串的地方。
ctrl+\ f "f表File,以游標所在字串當檔名,開啟之。
ctrl+\ i "i表Include,以游標所在字串當檔名,列出所有include此檔的檔案。
ctrl+\ d "d表calleD,以游標所在字串當函式名,列出所有此函式呼叫的函式。

安裝了plugin後可能會有一些錯誤訊息或是快捷鍵不work的狀況(都遇到了  囧)
就需要透過修改一些設定來解決
http://linux.chinaunix.net/techdoc/desktop/2009/03/29/1106223.shtml

大概是這樣
工具裝好了就上工吧~

沒有留言:

張貼留言