linux系統下用vim+ctags+cscope檢視原始碼
阿新 • • 發佈:2019-01-29
ctags 用於把關鍵字生成一個索引表,在vim裡可直接使用"ta 關鍵字"在索引表裡查詢並定位.
cscope 也是生成索引表,在vim裡使用"cs xx xx xx "來查詢
如檢視ffmpeg-3.0的原始碼:
1). 在終端進入原始碼目錄,輸入"ctags -R *" // 會在當前目錄下生成索引表文件, 檔名為tags
2). 在終端使用,需確保終端當前工作目錄是在索引表文件tags的所在目錄(注意需確保/etc/vimrc裡沒有"set tags=xx"的語句).
如檢視"av_register_all"函式, 則開啟vim後,輸入":ta av_register_all" , 按回鍵後可以直接定位到函式體的所在原始檔。
當檢視的內容出現多個選擇時,輸入前面的序號即可跳轉到相應的原始碼檔案。
在vim裡,按"ctrl+g"可檢視當前的原始檔名, "ctrl+o"可跳回上次瀏覽的位置.
當標移動到要檢視的關鍵字後,按"ctrl+]"直接檢視.
// vim+ctags 只適合檢視型別的定義,函式體等。並不適合如需檢視一個函式在哪些地方被呼叫了,又被哪些函式呼叫,所以還需要用cscope命令
3). 使用cscope命令生成索引表
終端命令:
find ./ -name "*.h" -o -name "*.c" > cscope.files //在當前目錄下查詢*.h, *.c檔案,並把相應的檔案及路徑輸出到cscope.file檔案裡
cscope -bkq // 讓cscope根據 cscope.file檔案裡的檔案列表生成索引表(cscope.in.out cscope.out cscope.po.out
)
4). cscope在vim裡的用法
開啟vim後, 輸入":cs"確認後會彈出幫助說明:
cscope commands:
add : Add a new database (Usage: add file|dir [pre-path] [flags])
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 this text string
help : Show this message (Usage: help)
kill : Kill a connection (Usage: kill #)
reset: Reinit all connections (Usage: reset)
show : Show connections (Usage: show)
Press ENTER or type command to continue
常用cs命令:
"cs add ./"是用於增加當前目錄下的索引表
"cs find c 函式名" 檢視哪些函式呼叫指定的函式名
"cs find d 函式名" 檢視指定的函式名呼叫了哪些函式
"cs find g 型別/函式" 檢視型別的定義或函式體
"cs find t 字串" 按字串內容來查詢相應的關鍵字
//////////////////////////////////////////////////////////
在一些原始碼工程裡,如uboot, linux kernel裡:
直接執行下面命令即可產生相應的索引表:
make tags
make cscope
檢視linux核心原始碼還可以通過”man 9 核心裡的函式”來檢視說明.
需要在linux核心原始碼目錄下:
make mandocs ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
make installmandocs ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
增加vim補全功能, 如核心路徑在/disk3/h3_kernel目錄下:
vim /etc/vimrc //修改vim配置檔案, 在檔案尾增加以下內容
set path+=/disk3/h3_kernel/include/
set path+=/disk3/h3_kernel/arch/arm/include/
set path+=/disk3/h3_kernel/arch/arm/mach-sunxi/include/
儲存退出後,在vim寫程式碼時,只要寫出前幾個字母后按”ctrl + p”即可顯示出補全內容