c - 如何在 vi/vim 中查找 C 代码中函数的调用者和被调用者?

标签 c linux vim vi

我想知道如何轻松单击(或使用一些简单的快捷方式)函数名称并找到它的所有被调用者或打开它的定义位置。网络中的大多数网络手册真的很难理解或不会碰巧解决。假设我想点击 allocuvm 并查看它的定义位置?

uint newstk=allocuvm(pgdir, USERTOP-PGSIZE, USERTOP); 

最佳答案

cscope 最小示例

Ingo 提到过,这里有一个例子。

首先你应该设置你的.vimrc :

set cscopequickfix=s-,c-,d-,i-,t-,e-

然后到你的项目的基目录并运行:

cscope -Rb

这会生成一个 cscope.out包含解析信息的文件。生成速度相当快,即使对于像 Linux 内核这样的大型项目也是如此。

打开vim并运行:

:cs add cscope.out
:cs find c my_func

ccallers 的助记符.其他cscope提供的查询也是可能的,助记符列在:

help cscope

这会将调用者列表添加到 quickfix 列表,您可以使用以下方式打开:

:copen

转到您感兴趣的行,然后按回车键跳转到那里。

要查找当前光标下函数名称的调用者,请添加到您的 .vimrc :

function! Csc()
  cscope find c <cword>
  copen
endfunction
command! Csc call Csc()

然后输入:Csc<enter>当光标位于函数顶部时。

待办事项:

忠告:我喜欢 vim,但设置这种东西对我来说太复杂了。而且它没有考虑类,例如在 C++ 中。如果一个项目对您来说足够重要,请尝试让该项目在某些“IDE”上运行。如果项目不跟踪 IDE 配置文件(它们是会污染存储库的自动更改的 blob...),它可能会涉及一些开销,但这对我来说是值得的。对于 C/C++,到目前为止我最喜欢的是 KDevelop 4。

关于c - 如何在 vi/vim 中查找 C 代码中函数的调用者和被调用者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19469770/

相关文章:

c - 如何在C中从甲板上抽牌而不重复?

linux - 根据文件类型对文件进行排序

linux - 当我启动 bash 脚本时,如何找到 Ubuntu 中的所有用户并通过参数显示用户信息?

vim - 如何在 Vim 的 g 命令的规范模式下转义

vim - 我如何像这样与 VIM 的表格插件保持一致?

c - 以 printf 作为参数的 for 循环

我可以使用 libjpeg 读取特定的图像行吗?

OpenMP 的代码执行速度较慢

Linux 错误 - setterm : $TERM is not defined./etc/cron.hourly/mcelog.cron:

macos - 如何在mac终端切换到vi编辑模式