1. 程式人生 > >linux系統下用vim+ctags+cscope檢視原始碼

linux系統下用vim+ctags+cscope檢視原始碼


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”即可顯示出補全內容