我正在构建用于测试辅助应用程序的工具。只需加载代码,查看控制流程图,运行测试,标记所有命中的顶点。我正在尝试通过解析代码自行构建CFG。不幸的是,如果代码被嵌套,它会变得困惑。 GCC提供了从编译代码中获取CFG的功能。我可能会为其输出编写解析器,但是我需要行号来设置断点。使用-fdump-tree-cfg
或-fdump-tree-vcg
输出Control Flow Graph时,是否可以获取行号?
最佳答案
对于C程序的控制流程图,您可以查看针对C的现有Python解析器:
调用图是与控制流程图密切相关的构造。
有几种方法可以为C代码创建调用图(函数依赖项)。
这可能有助于控制流程图的生成。
在C中创建依赖关系图的方法:
--cpp
选项来预处理代码。 不幸的是,以下工具要求代码是可编译的,因为它们依赖于gcc的输出:
egypt
使用gcc
生成RTL
,因此,对于任何错误的源代码都将失败,甚至在您只想关注单个文件的情况下也是如此因此,与基于cflow
的功能更强大的工具链相比,它不是很有用。请注意,埃及默认情况下对从图形中排除库调用提供了很好的支持,以使其更加整洁。同样,可以使用
crowfood
创建C/C++的文件依赖图。关于c - 从ANSI C代码获取控制流程图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16393985/