可视化代码流的工具(C / C ++)[关闭]


76

您是否有任何工具可以简化了解C / C ++代码的任务?我们只是继承了由他人编写的大量软件,因此我们需要快速入门。关于可以简化此任务的工具的任何建议?


14
@casperOne:为什么这个“没有建设性”?对任何人都是有用的……而且具有建设性!
dagnelies,2012年

@arnaud购物清单问题不是建设性的。blog.stackoverflow.com/2010/11/qa-is-hard-lets-go-shopping
casperOne 2012年

8
@casperOne:您提到的文章描述了有关购买硬件的建议等问题。绝对是要拒绝的问题。在这种情况下,这是有关解决特定问题(即帮助理解大型代码)的工具和技术的问题。我个人发现两者之间的桥梁相当大。
dagnelies,2012年

@arnaud它们是相同的,只是因为您没有在上面花钱或买东西(或者也许是),并不意味着您没有在征求任何东西。此外,无论是硬件,库还是工具都没有关系,也没有办法客观地表明哪个比另一个更好。有关为何列表问题不具有建设性的更多信息,请参
见此

Answers:




9

如果打开EXTRACT_ALL选项,则Doxygen非常擅长从代码生成图而无需应用标记。您需要安装GraphViz才能使用HAVE_DOT设置生成图表。我发现已安装它,而在Windows上将DOT_PATH保留为空白可以正常工作,但在OS / X上,必须直接指向点工具位置。

ACM Queue中有一篇非常出色的Code Spelunking文章,其中讨论了有关使用doxygen和DTrace的更多信息。


8

我个人使用调试器。遍历代码,看看它在做什么,去哪里是唯一的方法。

但是,您可以通过某些文档生成器(有时会提供帮助)运行它。氧气是一个很好的例子。


+1调试器是理解代码的唯一方法。
Tegiri Nenashi 2010年

8
我发现尝试了解一个大型代码库,而您却没有相当荒谬的经验。尝试在Clang或Linux等项目上执行此操作。你会发疯的。非常适合我熟悉的代码,或中小型项目恕我直言。
2014年

1
我从Google来到这里是因为我一直在使用调试器来查找在大型项目中更改代码的位置,但至今已有四天没有成功。
托马什Zato -恢复莫妮卡

5

如果您使用的是Linux(KDE),则基于cscope实用程序构建的KScope。我曾经(并且一直在使用)最好的东西是钻研一些陌生的巨大代码,我必须对其进行某种修改,或者根据自己的需要使用哪个API。它的功能之一是交叉引用数据库,可以通过很多方式对其进行搜索:您可以找到符号的所有引用,符号的全局定义,查找函数的调用者/被调用者等等。它甚至具有内置的IDE和显示调用图的功能。




1

我个人使用Visual Studio调试器工具。

它带有“呼叫者图”功能,使您可以可视化小盒子中的内容。我通常只需要Call Stack和通常的手表功能


Visual Studio调试器工具中的调用者图在哪里?我只能在Visual Studio非调试器工具中找到呼叫者层次结构。
玄ji 2016年


1

试试AQtime,它是一个分析工具,它显示所有被调用的函数(及其花费的时间),您可以设置分析的起点和终点。他们有30天的试用期。


即使您认为知道代码,AQtime的调用图有时也会很有启发性。
bk1e

1

我前一段时间使用Borland Together,它在通过代码生成模型方面做得不错。我相信它甚至可以从代码中生成序列图。请记住,如果您的代码混乱不堪,那么您的模型也将如此。而且我记得它并不便宜,但有时您可以享受特别优惠。


1

Rational Quantify还提供了一个不错的调用图。



0

Doxygen的好处是,它会让您知道丑陋/好是关于类的循环依赖性的代码。因此,尽管您可能不喜欢它,否则您将不得不重构代码:-)


0

Slickedit非常适合浏览您不知道的大量代码。标签功能使您可以在功能上处理代码,而不必处理文件所在的位置。(EMACS实际上具有标签,并且与Slickedit一样好,但是学习曲线更陡峭)

当您访问不了解的方法,类或变量时,只需按一下标签即可转到该代码,将其查找,然后弹出标签。(那些绑定到击键,因此非常快)

您还可以使用查找引用来查看在何处使用该函数/变量。

不必去找出文件所在的位置,从而节省大量时间。


0

doxygen是免费的doc生成工具(类似于Javadoc),也将生成关系图。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.