2007年9月7日 星期五

Trace Code的好幫手: GVim+Ctags+Cscope

Trace Code的軟體舉凡Source NavigatorAnjuta都佔有一定比例使用人數,但GVim+Ctags+Cscope更是一項不錯的選擇,底下將簡單介紹如何使用CtagsCscope

Ctags
Ctags用來產生原始碼每一tag(函數名或識別子)所在位置,執行Ctags會產生名為tags的檔案,Vim參考此檔便可知道每一tag的資訊。因此,只要將游標移至函數名或識別子上,按Ctrl+
]就可以跳至函數或識別子定義的地方。如欲返回,則按Ctrl+t即可。

Cscope
使用Cscope可搜尋tag、搜尋哪些地方呼叫某一函數、搜尋某一檔案與利用正規表達式搜尋相關字串等等功能 (在Vim底下按":cs"會秀出Usage Tip)。



範例示範 (Step by Step,假設欲Trace Linux核心原始碼)

1. 至Cscope官網下載cscope_maps.vim,並將之複製到~/.vim/plugin/。如此便能於啟動Vim時,自動載入cscope產生出來的檔案 (cscope.out)。

2. 至/usr/src/linux-source-版本編號,執行ctags與cscope兩個檔案。

  • adrian@adrian-desktop:~# cd /usr/src/linux-source-2.6.20
  • adrian@adrian-desktop:/usr/src/linux-source-2.6.20# ctags -R && cscope -R (ctags產生tags檔,cscope產生cscope.out) --> 如欲離開cscope,按Ctrl+D即可。

3. 隨便編輯一個.c檔,如init/main.c
  • adrian@adrian-desktop:/usr/src/linux-source-2.6.20# vim init/main.c
  • 假設在init/main.c想要觀看get_option這個識別子定義的地方,將游標移到該識別子上,再按Ctrl+]。如欲知道哪些地方呼叫該識別子,將游標移到該識別子上,按Ctrl+\,再按c即可。Ctrl+\,再按s則搜尋該識別子出現的地方。

3 則留言:

surface 提到...

vim with ctags is good, I usually use ctrl+] and ctrl+i and ctrl+o to travel backward or forward of each point. :tnext to travel to next point if ctags resolves more than one points.

http://linux.byexamples.com

Adrian Huang 提到...

Hi, Surface:
Thanks for providing the great useful tips. XDD......

Internet business at home automated system 提到...

有個"網路兼職"機會替自己加薪,增加存款!
給自己一個機會深入瞭解吧!
免費索取在家網路兼職資料 。
http://joe80411.weebly.com/
祝~天天都是有美好的一天˙快樂與您同在
PS:謝謝您的閱讀。如果您不感興趣,很抱歉打擾您!!