【发布时间】:2010-11-11 07:48:41
【问题描述】:
我正在进行一项关于 Linux 内核中一些非常长的函数的学术研究(link、link)。
对于该研究,我想使用一些代码流可视化工具,它能够绘制一个图形,其中每个顶点都是一个决策点,每个边都是一段代码,它以一种后续的方式运行。
你知道任何可以可视化 C 代码的优秀开源项目吗?
【问题讨论】:
标签: visualization
我正在进行一项关于 Linux 内核中一些非常长的函数的学术研究(link、link)。
对于该研究,我想使用一些代码流可视化工具,它能够绘制一个图形,其中每个顶点都是一个决策点,每个边都是一段代码,它以一种后续的方式运行。
你知道任何可以可视化 C 代码的优秀开源项目吗?
【问题讨论】:
标签: visualization
也许像KCacheGrind 这样的工具会有所帮助。它根据实际调用生成调用图,并且无法在不实际运行程序的情况下预先生成调用图,这可能不适合您的需求,但它可能再次满足您的需求。
【讨论】:
Doxygen 做了一些“可视化”,
但是您需要对代码进行一些处理才能使其可用。
要检查的另一个有趣的事情是lxr
Linux Cross Referencer 是一个用于索引和展示源代码存储库的软件工具集。 LXR 最初针对的是 Linux 源代码,但已证明可用于广泛的软件项目。 lxr.linux.no 目前正在运行 LXR 软件的实验分支。
【讨论】:
您似乎想要获取 C 源代码的流程图(“决策”、“代码块”)。
像这样C flowchart?
要正确执行此操作,尤其是。对于 Linux 内核代码,我希望您必须首先预处理代码以摆脱宏和条件。我假设 GCC 会在内部构建这样一个图表,并且您应该能够掌握该图表。
【讨论】:
History flow's 非常适合跨多个版本的更改/差异。
Codeplex 有一个项目,Dependency Visualizer,它也支持 C。
Gprof2Dot 可以渲染 oprofile,这也可以获得动态信息。
CodeViz(静态工具)也可以工作。
如果你使用 gcc,gcc-xml 有一个 introspector plugin 也可以这样做。
【讨论】: