c语言调用graphviz_doxygen+graphviz轻松绘制函数调用图(call graph)

本文介绍了如何在Windows环境下利用doxygen和graphviz免费且跨平台地生成C语言的函数调用关系图。首先,需要安装graphviz作为doxygen的依赖。然后,通过doxywizard配置doxygen的参数,包括选择程序语言、设置输出格式等。完成配置后运行doxygen进行源码分析,最后查看生成的HTML输出,其中包括头文件引用和函数调用的关系图。
摘要由CSDN通过智能技术生成

前言

之前的工作环境习惯了使用source insight查看函数分析代码,切换到mac下后改用vscode,发现缺少函数调用关系图生成。跨平台的understand可以很好的解决,但是公司没有购买,因此需要寻找一个免费、跨平台的替代工具。doxygen + graphviz是不错的选择。

1 介绍

支持Linux、Windows、Mac OS X系统(本文将以Windows版本为例)。

支持C语言在内的多种语言的分析,生成的帮助文档格式可以是CHM、RTF、PostScript、PDF、HTML和Unixman page等。

我使用doxygen的主要目的是生成函数调用关系图,但它能做的远不止于此,它是一款优秀的文档自动生成工具。它可以将代码中的注释转换成帮助文档(注释格式要符合 doxygen 要求才行,FFmpeg API Documentation 就是用doxygen自动生成的),它也可以通过静态分析代码,生成「头文件引用关系图」、「函数调用关系图」、「继承图」以及「协作图」来可视化文档之间的关系。

有了这样的工具,在发布程序版本的同时,发布帮助文档也将变得简单、高效,配合持续集成系统(如Jenkins),自动构建系统,帮助文档可以跟随代码一起实时、轻松的发布版本。

本文主要介绍如何使用 doxygen 生成函数调用关系图,其他功能(如将代码的注释生成帮助文档)不在本文讨论范围内,这是一个入门级的教程。

2 安装

2.1 安装 graphviz

doxygen 自身没办法生成关系图,需要依赖 graphviz 才行,得先安装 graphviz。根据自身系统选择安装的版本。

2.2 安装doxygen

根据自

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Graphviz是一款开源的形可视化工具,可以将描述形的代码转换成形。如果你想在c语言调用Graphviz,通常可以通过以下步骤实现: 1. 安装Graphviz工具:在Graphviz官网上下载并安装Graphviz工具,安装完成后将Graphviz安装目录添加到系统环境变量中。 2. 在c语言调用Graphviz API:Graphviz提供了C语言的API,可以通过这些API来生成形。在c语言中引入Graphviz API头文件,并调用Graphviz提供的函数来生成形。 3. 编写描述形的代码:使用Graphviz的语言描述工具(如DOT语言)编写描述形的代码。 4. 将描述形的代码传递给Graphviz API:将描述形的代码传递给Graphviz API,调用API生成形。 下面是一个简单的示例代码,可以在c语言中使用Graphviz API来生成一个简单的形: ```c #include <stdio.h> #include <stdlib.h> #include <gvc.h> int main(int argc, char **argv) { GVC_t *gvc; graph_t *g; node_t *n1, *n2, *n3; /* 创建一个形 */ gvc = gvContext(); g = agopen("g", Agdirected, NULL); /* 创建三个节点 */ n1 = agnode(g, "n1", 1); n2 = agnode(g, "n2", 1); n3 = agnode(g, "n3", 1); /* 添加边 */ agedge(g, n1, n2, NULL, 1); agedge(g, n2, n3, NULL, 1); /* 渲染形 */ gvLayout(gvc, g, "dot"); gvRenderFilename(gvc, g, "png", "output.png"); /* 释放内存 */ gvFreeLayout(gvc, g); agclose(g); gvFreeContext(gvc); return 0; } ``` 在这个示例代码中,我们使用Graphviz API创建了一个有三个节点和两个边的形,并将形渲染成PNG格式的片。你可以根据自己的需求修改代码来生成不同的形。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值