0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何提高阅读源码的效率

FPGA之家 来源:小麦大叔 作者:小麦大叔 2022-07-06 10:01 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

我发现函数调用图可以让我们更加直观地了解到源码函数直接的调用和层次关系,提高阅读源码的效率。

1 前言

看源码的时候,心血来潮想弄一下函数之前的调用关系,想起以前doxygen配合graphviz使用可以生成比较直观的函数调用关系图,但是前提是函数的注释需要严格按照doxygen的规范,具体可以自己去搜索一下,当然使用source insight等利器也很方便;

本文主要通过gcc+egypt+graphviz(dot)三个工具轻松生成源码的函数调用关系图;下图是本人在阅读FreeRTOS源码tasks.c时生成的调用关系图,具体如下所示;

045f7db6-fcc3-11ec-ba43-dac502259ad0.png一个例子

2 graphviz 安装

Graphviz (Graph Visualization Software的缩写)是一个由AT&T实验室启动的开源工具包,用于绘制DOT语言脚本描述的图形。ubuntu下可以直接安装;

sudoapt-getinstallgraphviz

直接输入指令后,系统开始安装;046f787e-fcc3-11ec-ba43-dac502259ad0.png

成功安装graphviz,这里我们就可以使用dot工具了,具体使用方法如下;

04840af0-fcc3-11ec-ba43-dac502259ad0.png

3 egypt 安装

egypt官网: http://www.gson.org/egypt/

049544b4-fcc3-11ec-ba43-dac502259ad0.png简洁的首页

下载后的文件为egypt-1.10.tar.gz;找到文件所在路径;

sudofind-nameegypt-1.10.tar.gz

然后解压:

sudotar-xvfegypt-1.10.tar.gz

解压得到egypt-1.10;

cdegypt-1.10&&sduochmod+xegypt

最终可以看到文件结构如下;

04b8cbe6-fcc3-11ec-ba43-dac502259ad0.png

将egypt移动到/usr/bin,方便后面直接调用,或者将当前egypt所在路径添加到环境变量中;

sudocpegypt/usr/bin

以上,已经完成了egypt的安装;

使用方法如下;

egypt[--omitfunction,function,...][--include-external]...|dotty-
egypt[--omitfunction,function,...][--include-external]...|dot

4 测试

编写程序test.c,具体如下所示;

#include

voidtest0();
voidtest1();
voidtest2();
voidtest3();

intmain()
{
test1();
test2();
test3();
return0;
}

voidtest0(void){
printf("hello");
}

voidtest1(void)
{
test0();
}

voidtest2(void)
{
test1();
}

voidtest3(void)
{

}

编译需要加上参数-fdump-rtl-expand生成相应的dump文件;

gcc-fdump-rtl-expand-ctest.c

04c8f034-fcc3-11ec-ba43-dac502259ad0.png

这里有我们需要的文件test.c.229r.expand;

输入如下指令;

egypttest.c.229r.expand|dot-Tpng-otest.png

最终生成了顺利生成test.png,具体如下图所示;

04d42850-fcc3-11ec-ba43-dac502259ad0.png最终调用关系图

5 结论

C语言源码的阅读用这个办法还是有点小麻烦,无法一键生成调用关系,,

另外还需要gcc编译源码生成dumpfile文件,如果想要方便一些,可能还需要自己写脚本实现自动化,如果大佬有更好的办法,欢迎留言区讨论。

原文标题:一个超级实用的源码阅读小技巧

文章出处:【微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

审核编辑:彭静

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    183

    文章

    7642

    浏览量

    144644
  • 源码
    +关注

    关注

    8

    文章

    682

    浏览量

    31098
  • 函数
    +关注

    关注

    3

    文章

    4406

    浏览量

    66855

原文标题:一个超级实用的源码阅读小技巧

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何提高RCA清洗的效率

    在半导体制造中,RCA清洗作为核心工艺,其效率提升需从化学、物理及设备多维度优化。以下是基于技术文献的系统性策略: 一、化学体系精准调控 螯合剂强化金属去除 在SC-1/SC-2溶液中添加草酸等
    的头像 发表于 11-12 13:59 184次阅读

    怎样提高单相交流电机的效率

    提高单相交流电机效率是一个涉及设计优化、材料选择、运行维护等多方面的系统工程。以下从技术原理、实用方法和前沿趋势三个维度,系统阐述提升效率的可行方案: 一、核心原理与效率瓶颈 单相交流
    的头像 发表于 11-12 07:40 155次阅读

    如何提高光刻胶残留清洗的效率

    提高光刻胶残留清洗效率需要结合工艺优化、设备升级和材料创新等多方面策略,以下是具体方法及技术要点:1.工艺参数精准控制动态调整化学配方根据残留类型(正胶/负胶、厚膜/薄膜)实时匹配最佳溶剂组合。例如
    的头像 发表于 09-09 11:29 446次阅读
    如何<b class='flag-5'>提高</b>光刻胶残留清洗的<b class='flag-5'>效率</b>

    智能小车设计源码和图纸资料

    智能小车设计源码和图纸
    发表于 08-25 15:38 1次下载

    RFID智能书柜:阅读新时代的智慧引擎

    RFID智能书柜以其便捷自助借还、精准定位与错架提醒、多媒体展示与互动等功能,大大提高了图书管理效率与准确性。无论是在大型图书馆还是校园书柜,只需输入书名或作者等关键词,智能书柜就能快速锁定书籍位置,激发阅读兴趣。
    的头像 发表于 05-20 17:06 375次阅读
    RFID智能书柜:<b class='flag-5'>阅读</b>新时代的智慧引擎

    智慧阅读触手可及——RFID微型图书馆,你了解吗?

    RFID微型图书馆是一种新型的阅读模式,通过射频识别技术构建的小型化、智能化图书馆设施。它提供24小时自助服务、多种登录方式、图书定位与查找、快速盘点图书和数据统计与分析等功能,极大地提高阅读体验。
    的头像 发表于 04-09 15:37 549次阅读
    智慧<b class='flag-5'>阅读</b>触手可及——RFID微型图书馆,你了解吗?

    功率设备控制可使用过零检芯片CN71102提高转换效率

    功率设备控制可使用过零检芯片CN71102提高转换效率
    的头像 发表于 03-25 09:43 661次阅读
    功率设备控制可使用过零检芯片CN71102<b class='flag-5'>提高</b>转换<b class='flag-5'>效率</b>

    焊接技术如何提高生产效率

    随着工业自动化和智能制造的快速发展,焊接技术已经成为提高生产效率的关键因素之一。 一、引言 在现代制造业中,焊接技术是连接金属部件的主要方法之一,广泛应用于汽车、航空、造船、建筑和重工业等领域。随着
    的头像 发表于 01-19 14:24 1324次阅读

    AN144-通过静音开关设计降低EMI并提高效率

    电子发烧友网站提供《AN144-通过静音开关设计降低EMI并提高效率.pdf》资料免费下载
    发表于 01-12 11:20 0次下载
    AN144-通过静音开关设计降低EMI并<b class='flag-5'>提高效率</b>

    如何提高SMT生产效率

    在竞争激烈的电子制造领域,SMT生产线的效率直接影响到企业的竞争力。 1. 生产流程优化 1.1 精益生产 精益生产是一种旨在减少浪费、提高效率的生产管理方法。通过识别和消除生产过程中的非增值活动
    的头像 发表于 01-10 16:28 2607次阅读

    Dali通信如何提高能源效率

    随着全球能源危机的加剧和环境保护意识的提高,能源效率成为了现代社会的一个重要议题。在建筑领域,照明系统是能耗大户,因此提高照明系统的能源效率显得尤为重要。DALI通信作为一种先进的照明
    的头像 发表于 01-10 10:46 839次阅读

    如何提高半导体设备防震基座的制造效率

    如何提高半导体设备防震基座的制造效率?-江苏泊苏系统集成有限公司提高半导体设备防震基座的制造效率是一个综合性的过程,需要从多个方面进行优化和改进,以下是一些可行的方法:1,优化生产流程
    的头像 发表于 01-08 15:06 706次阅读
    如何<b class='flag-5'>提高</b>半导体设备防震基座的制造<b class='flag-5'>效率</b>?

    SOLIDWORKS 2025提高数据效率

    随着技术的不断进步,CAD软件在工程设计领域的作用日益凸显。SOLIDWORKS 2025作为新的CAD软件版本,通过引入一系列创新功能和优化措施,显著提高了数据管理的效率和准确性。
    的头像 发表于 01-07 14:49 834次阅读
    SOLIDWORKS 2025<b class='flag-5'>提高</b>数据<b class='flag-5'>效率</b>

    在电池组装过程中,如何提高滚槽和焊接的效率

    提高滚槽和焊接效率需要从设备、工艺、人员培训、材料等多个方面入手。通过综合运用这些策略和方法,可以显著提升电池组装过程的整体效率和质量。
    的头像 发表于 12-30 09:34 598次阅读
    在电池组装过程中,如何<b class='flag-5'>提高</b>滚槽和焊接的<b class='flag-5'>效率</b>?

    怎样提高三坐标测量机的测量效率

    提高三坐标测量机的测量效率是许多制造和质量控制领域中的一个关键问题。三坐标测量机(CMM)是一种精密的测量设备,用于检测零件的几何尺寸和形状。以下是一些提高三坐标测量机测量效率的方法,
    的头像 发表于 12-19 10:20 1572次阅读