使用vim/cscope在Linux内核中查找符号定义

4

我正在使用带有cscope/ctags的gvim/vim在Linux内核中查找符号定义。由于源代码非常庞大,因此当我想要使用“tag device”命令搜索结构设备时,vim会提示我数百个出现的结果,因为它会提供名为device的全局变量和被命名为device的结构成员。有没有办法改善这种情况?是否可以告诉vim/cscope/tag只查找结构定义?


1
我的评论可能与直接相关。我曾经使用过cscope,但发现lxr更方便。因此,我建议使用lxr而不是cscope。您也可以尝试一下基于Web的lxr,网址为http://lxr.free-electrons.com/,以了解其特点。 - Prajosh Premdas
如果你想远离 Vim,那么 Eclipse 将会更加强大。 - Neo
我不确定Eclipse和Linux kernel会是一个好的组合。 - Prajosh Premdas
我曾经使用过它。但在我的i3核心CPU/3 GB RAM上运行速度较慢。然后,我被迫在虚拟机上工作,这变得不切实际。 - Neo
1个回答

1
这个,你可能已经知道了。我通过 cscope vim 命令进行缩小范围。
:cs f e struct device {

请参考 cscope vim 命令的用法。
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 assignments to
help : Show this message              (Usage: help)
kill : Kill a connection              (Usage: kill #)
reset: Reinit all connections         (Usage: reset)
show : Show connections               (Usage: show)

感谢您发布答案。与其发布外部网站的链接,不如在您的答案中包含链接/文章的精华部分,以防该网站不再可用。 - Deanna
是的,但你需要考虑空格...有时我使用方法。我将选项g-添加到cscopequickfix变量(set cscopequickfix=+g)中,以便可以在快速修复窗口中显示搜索结果,然后cs f g...然后我可以快速搜索快速浏览窗口以定位结构定义或任何我想要的东西。 - Neo
你指的是哪个空间? - Drad
cs f e 结构体...倾向于较慢。它比 cs f g 慢。 - Neo
是的,它会在整个源代码中进行搜索。这是一种权衡。如果您有许多设备定义,则会缩小源代码中的结构定义范围。 - Drad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接