前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >简简单单,快速生成函数调用关系图

简简单单,快速生成函数调用关系图

作者头像
编程珠玑
发布2021-07-20 11:35:34
5.7K0
发布2021-07-20 11:35:34
举报
文章被收录于专栏:编程珠玑

## 示例代码

代码语言:javascript
复制
 // 来源:公众号编程珠玑
 // 作者:守望先生
#include<stdio.h>
#include<stdlib.h>
int level()
{
    int ret = rand() % 100;
    return ret;
}
int level2(int input)
{
    int ret = rand() % input;
    return ret;
}
int main()
{
    int a = level();
    int b = level2(a);
    printf("%d\n", b);
}

生成调用关系图

代码语言:javascript
复制
clang -S -emit-llvm demo.c -o - | opt -analyze -dot-callgraph
dot -Tpng -ocallgraph.png callgraph.dot

当然这里用到了好几个工具,你可能需要单独安装。

效果图

扩展

另外就是还可以利用CodeViz 给编译器打补丁的方式来生成调用关系 图,有兴趣的也可以去尝试看看。关于dot,之前在《如何优雅地画一棵树》中也有介绍其应用。而在分析性能问题的时候,要看到底层所有调用关系图,还可以使用gprof2dot。看个示例图感受一下,工具的详细使用也可以点击阅读原文:

今天这篇就完了。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-06-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 编程珠玑 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 生成调用关系图
  • 效果图
  • 扩展
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档