有什么好的工具可以帮助浏览/跟踪C代码?

14

有时我需要修改 OSS 代码或别人的代码(通常是基于 C,但有时也会用到 C++/Java),在跟踪代码流程并尝试理解系统时,我发现自己需要在头文件中搜索类型、函数声明等内容。是否存在一种良好的工具,可以帮助浏览代码?我希望能够点击一个类型,并跳转到其声明,或者点击一个函数名,并跳转到其实现。因为我使用的是 Linux 系统,所以回复中提到“只需使用 Visual Studio”之类的答案可能不适用于我。谢谢!

27个回答

13

2
SourceInsight只能在Windows上使用,对吧?发帖者说他们正在使用Linux。 - Andrew Edgecombe

10

我使用 Vim 编辑器和 ctags 以及 taglist 插件。你只需要将光标移至变量名上,并按下快捷键,即可跳转到该变量的定义位置(然后再跳回来)。Taglist 还会在侧边栏中显示所有函数、类等的概览。


7

我听说过关于OpenGrok的很多好事情。我知道我所在的公司里的另一个团队正在使用它,并且他们觉得它非常方便。从它的网站上可以看到:

OpenGrok是一个快速易用的源代码搜索和交叉引用引擎。它可以帮助您搜索、交叉引用和导航您的源代码树。它可以理解各种程序文件格式和版本控制历史,如Mercurial、Git、SCCS、RCS、CVS、Subversion、Teamware、ClearCase、Perforce和Bazaar。换句话说,它让您深刻理解开放源代码,因此得名为OpenGrok。它是用Java编写的。


7

Doxygen可以生成一组包含源代码浏览器的网页。虽然不像IDE那么花哨,但只需要一个网络浏览器即可。


5
Eclipse 集成开发环境不仅可以用于 Java,还可与 C/C++ 一起使用。IBM 的 Developer Works 网站上有一篇文章介绍如何配置 Eclipse 以进行 C/C++ 开发。

编辑:为什么会被投票反对?这是一个有效的答案。使用 C/C++ 插件的 Eclipse 可以让问题作者实现他想要的功能。我不是唯一一个提出这个建议的人,但其他人没有被投票反对。那么为什么这个被投票反对呢?


3
我在内核空间做一些工作,并不断扩大范围。
例如: $ cd /usr/src/redhat/BUILD/kernel-version $ cscope -R -p4
   Find this C symbol:
   Find this function definition:
   Find functions called by this function:
   Find functions calling this function:
   Find this text string:
   Change this text string:
   Find this egrep pattern:
   Find this file:
   Find files #including this file:

在帮助他人的项目上工作时,我通常会“生活”在c-scope中。我使用它来打开文件并使用我的IDE“gvim”进行编辑,然后退出并返回到c-scope中,这有助于保持任务集中。

我相信可以配置cscope以配合vim和emacs使用,尽管我也看到人们使用其他编辑器。

祝你好运。


2

1
如果你参与的项目中有高级语言代码和汇编代码混合,我建议使用Opengrok。我最近转向了Opengrok,并发现它非常棒。在我看来,Opengrok + Firefox + 扩展是最佳组合。一些Firefox扩展,如Scrapbook等,允许你在浏览代码时修改和添加注释。再次强调,这主要是用于“浏览”代码,而不是实时修改代码。

1

使用Doxygen并将EXTRACT_ALL设置为YES。它既强大又易于使用。一旦你爱上它,你可以在所有平台和语言中坚持使用它。

http://www.doxygen.org


1

如果你正在寻找一些简单而普遍的东西,可以尝试etags。虽然它不如重量级工具好用,但几乎所有设备都支持它,并且它可以与emacs一起使用。对于vi用户,请使用ctags。


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