这是gtags版本5.7.1,与Ubuntu 14.04一起打包的版本。这是gtags的旧版本。
Linux内核有一个gtagsMake目标,它ultimately results in the commandall_target_sources | gtags -i -f -
-i告诉gtags执行增量更新
-f告诉gtags从下面的文件中读取源文件列表(检查符号)。-f -表示从stdin读取列表。
all_target_sources是输出所有相关.c和.h文件列表的function
当我运行make gtags时,生成的标记表是空的(GTAGS、GPATH等都有16字节的大小,看起来只是一个头)。
如果我修改script that generates tags以便它使用以下内容:

all_target_sources > sources.list
gtags -iv -f sources.list

我得到了同样的结果。添加的-v将为我提供以下输出:
checking /home/me/sources/linux/GTAGS
GTAGS found at '/home/me/sources/linux/GTAGS'.
[Tue Jul 05 10:21:49 BST 2016] Gtags started.
 Using default configuration.
 Tag found in '/home/me/sources/linux'.
 Incremental update.
[Tue Jul 05 10:21:49 BST 2016] Updating 'GTAGS'.
[Tue Jul 05 10:21:49 BST 2016] Updating 'GRTAGS'.
[Tue Jul 05 10:21:49 BST 2016] Updating 'GSYMS'.
 Global databases have been modified.
[Tue Jul 05 10:21:49 BST 2016] Done.

但是当我直接从shell运行gtags -iv -f sources.list时(使用脚本中剩下的sources.list),我发现构建了一个合适的标记表。
我已经从script内部转储了环境,并将其与即时环境进行了比较,没有明显影响gtags的差异。
有人知道可能导致这种情况的任何gtags行为吗?
[元]对不起,没有gtagsgnu-global标记,我没有创建它的代表。

最佳答案

我还没有找到问题的根源,但是在从源安装latest version of GNU Global之后,问题就消失了。所以我认为这可能是旧版本的gtags中的一个bug。

关于linux - make gtags在Linux内核上产生空数据库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38199998/

10-12 16:11