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

C语言题库

共 690字,需浏览 2分钟

 · 2022-02-26

转载请注明以下内容:
来源:公众号【编程珠玑】
作者:守望先生
ID:shouwangxiansheng

## 示例代码

 // 来源:公众号编程珠玑
 // 作者:守望先生
#include
#include
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);
}

生成调用关系图

clang -S -emit-llvm demo.c -o - | opt -analyze -dot-callgraph
dot -Tpng -ocallgraph.png callgraph.dot

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

效果图

扩展

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

今天这篇就完了。

浏览 61
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报