首页 > 后端开发 > C++ > 正文

如何生成C代码调用图来分析执行路径?

Susan Sarandon
发布: 2024-11-16 18:35:03
原创
728 人浏览过

How to Generate a Call Graph for C   Code to Analyze Execution Paths?

生成 C 代码调用图

本文探讨了为 C 代码创建调用图的技术,特别是在尝试识别所有 C 代码调用图时导致特定函数的可能执行路径。

创建调用图

为了满足这一需求,一种方法是利用 LLVM 优化管道。这可以通过使用 -S 和 -emit-llvm 标志编译代码,然后通过 opt 工具使用 -analyze 和 -dot-callgraph 选项来实现。例如:

$ clang++ -S -emit-llvm main1.cpp -o - | opt -analyze -dot-callgraph
$ dot -Tpng -ocallgraph.png callgraph.dot
登录后复制

此命令生成一个表示潜在执行路径的调用图,以可视化图表的形式进行描述。

自定义调用图表示

在某些情况下,对调用图进行后处理以增强可读性可能会有好处。一种方法是使用 c filt 来获取未损坏的函数和类名称。以下示例演示了此过程:

$ clang++ -S -emit-llvm main1.cpp -o - |
   opt -analyze -std-link-opts -dot-callgraph
$ cat callgraph.dot |
   c++filt |
   sed 's,>,\>,g; s,-\>,->,g; s,<,\<,g' |
   gawk '/external node/{id=}  != id' |
   dot -Tpng -ocallgraph.png    
登录后复制

通过应用此修改后的图,可以更轻松地识别每个路径中涉及的特定函数和类。

以上是如何生成C代码调用图来分析执行路径?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板