加上 cscope for vim 的 key mapping 才能動作。
- 建立要cscope 處理的檔案列表
- 要 cscope 根據列表產生 database
cscope 會依照 cscope..files 的內容 (檔案量列表),
parsing context 產生data base。
如果是 linux kernel,
可以用 find command 找出要的 source file。
以下就是以 ARM 為例子的 shell script:
#!/bin/sh
find . \
-path "arch/arm/*" -prune \
-o -path "include/asm-*" \
! -path "include/asm-i386*" -prune \
-o -path "tmp*" -prune \
-o -path "Documentation*" -prune \
-o -path "scripts*" -prune \
-o -path "drivers*" -prune \
-o -name "*.[chxsS]" -print > cscope.files
在 kernel source folder 執行完 script ,會在目錄下產生 cscope.files。接著產生 database..
在目錄下作
cscope -b -q -k
- -b : 產生 database 就好,不用 launch gui
- -q : 產生 reverse index,方便 search
- -k : kernel mode , 不要對 ./usr/include 作 index
做完以上動作,cscope 的 資料就 OK 了。
下載 cscope for vim 的 keymapping 檔。
cscope_maps.vim
download 到 .vim/plugin/ 下
--- 沒有這個目錄就自己 create 一個。
之後就可以像平常一樣開啟任何一個 source file。
然後.. 在任何變數 , function 按
Ctrl \ + g
到 定義的地方。Ctrl \ + d
列出這個 function 所有呼叫到的 function,讓你挑選。Ctrl \ + c
到 call 這個 function 的 code 去。要回到上一個地方用:
Ctrl t
可以用
:cs help
列出command....
find : Query for a pattern (Usage: find c|d|e|f|g|i|s|t name)
c: Find functions calling this function
d: Find functions called by this function
e: Find this egrep pattern
f: Find this file
g: Find this definition
i: Find files #including this file
s: Find this C symbol
t: Find assignments to
ref:
- http://cscope.sourceforge.net/large_projects.html
- http://http://forteallan.pixnet.net/blog/post/24394720-cscope-%5B%E7%80%8F%E8%A6%BD%E7%A8%8B%E5%BC%8F%E7%A2%BC%E5%B7%A5%E5%85%B7-built-with-vim%5D"
- http://softsmith.blogspot.com/2009/01/vim-cscope-trace.html
- http://adrianhuang.blogspot.com/2007/09/trace-code-gvimctagscscope.html
沒有留言:
張貼留言