global
安装
安装GNU global
,以ubuntu
为例:
$ sudo apt install global
安装后有如下命令
gtags : 生成GNU global的数据库
global : 在shell命令行中进行查询
gtags-cscope : 在vim中利用 cscope一样的界面进行查询
生成数据库
生成GNU global
数据库,以linux kernel
为例:
$ make ARCH=arm gtags # 只生成arm的数据库
或
$ gtags # 不建议使用,默认会生成所有arch的数据库
生成如下文件
GTAGS : definition database
GRTAGS: reference database
GPATH : path name database
查询
通过GNU global
查询 函数在哪里定义 或 函数在哪里被调用等等,下面分别介绍shell
, vim
与vscode
是如何进行查询
A. 通过shell
进行查询
$ global -x <funcName> # 查找函数定义
$ global -rx <funcName> # 查找函数调用
B. 通过vim
进行查询
首先,在/etc/vim/vimrc.local
添加如下配置
set cscopeprg=gtags-cscope
if filereadable("GTAGS")
cs add GTAGS
else
let gtags_file=findfile("GTAGS", ".;")
if !empty(gtags_file) && filereadable(gtags_file)
exe "cs add" gtags_file
endif
endif
nmap <C-@>g :cs find g <C-R>=expand("<cword>")<CR><CR> " Find function definition
nmap <C-@>c :cs find c <C-R>=expand("<cword>")<CR><CR> " Find function call
然后,用vim
打开某一个文件后,就可以通过ctrl-@ g
查询 函数在哪里定义,通过ctrl-@ c
查询 函数在哪里被调用
C. 通过vscode
进行查询
首先,安装 C/C++ GNU Global
插件
然后,用vscode
打开某一个文件后,就可以通过右键->xxx
查询 函数在哪里定义 或 函数在哪里被调用
Last updated
Was this helpful?