gpt4 book ai didi

c - 从 ANSI C 代码获取控制流图

转载 作者:太空狗 更新时间:2023-10-29 16:46:05 39 4
gpt4 key购买 nike

我正在构建用于测试 ANSI C 应用程序的工具。只需加载代码、查看控制流图、运行测试、标记所有被命中的顶点。我正在尝试通过解析代码自行构建 CFG。不幸的是,如果代码是嵌套的,它就会变得困惑。 GCC 提供了从编译代码中获取 CFG 的能力。我可能会为其输出编写解析器,但我需要行号来设置断点。使用-fdump-tree-cfg-fdump-tree-vcg输出控制流图时,有没有办法获取行号?

最佳答案

对于 C 程序的控制流图,您可以查看现有的 C Python 解析器:

调用图是与控制流图密切相关的结构。有多种方法可用于为 C 代码创建调用图(函数依赖性)。这可能证明有助于控制流图生成的进展。在 C 中创建依赖关系图的方法:

不幸的是,以下工具要求代码是可编译的,因为它们依赖于 gcc 的输出:

  • CodeViz (GPL v2) (弱点:需要可编译源,因为它使用 gcc 来转储 cdepn 文件)
  • gcc + egypt +dot (GPL v*, Perl = GPL | Artistic license, EPL v1) (egypt 使用 gcc 生成 RTL,因此任何失败错误的源代码,甚至在你只想专注于一个更大项目的单个文件的情况下。因此,与更强大的基于 cflow 的工具链相比,它不是很有用。请注意埃及有默认情况下很好地支持从图中排除库调用,使其更清晰。

此外,可以使用 crowfood 创建 C/C++ 的文件依赖关系图。 .

关于c - 从 ANSI C 代码获取控制流图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16393985/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com