嵌入式代码查看分析利器---Understand

这篇具有很好参考价值的文章主要介绍了嵌入式代码查看分析利器---Understand。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  平时在开发嵌入式程序的时候大多数使用的都是keil软件,一般小的工程使用keil没感觉到有什么问题,但是当工程比较大的时候,比如移植了FreeRTOS系统或者LWIP网络系统时,代码全部编译一次就要花费很长世间,特别是开启了点击函数右键跳转的功能之后,速度更加慢。有时候只是为了查看一下代码,为了能够使用函数跳转功能,就不得不把工程全部编译一遍。

  为了提高开发效率,一般查看代码的时候会使用vscode 和 source insight 这类软件,但是vscode占用内存比较大,电脑配置比较来的话,电脑就会比较卡。source insight占用内存比较小,功能和使用方法上感觉没有vscode方便,但是source insight 有个优点就是可以查看函数调用关系图。
嵌入式代码查看分析利器---Understand  这个功能用起来感觉很方便,特别是查看别人代码的时候,能有一个直观的感受。于是平时就是vscode 和 source insight 这两个软件交替使用。

  直到前几天无意中发现了Understand这个软件之后,vscode 和 source insight 就再也不想用了,特别是Understand 强大函数关系图生成功能。用一次之后就再也回不去了。先上一张图感受下。
嵌入式代码查看分析利器---Understand

  下面就详细说一下如何使用Understand软件。在浏览器中直接搜索Understand 进行下载安装破解,具体过程网上教程很多,这里就不再演示了。
嵌入式代码查看分析利器---Understand
  下载安装完成之后,打开软件。
嵌入式代码查看分析利器---Understand
  如果要查看代码的话,不能像vscode那样直接把文件夹拖入到软件界面中直接打开。要使用这个软件必须要给要查看代码先建一个工程。

  在桌面上新建一个code文件夹准备存放Understand的工程文件,FreeRTOS移植实验是要查看的代码。 也可以不新建code文件夹,Understand的把工程文件直接存放在FreeRTOS移植实验里面。
嵌入式代码查看分析利器---Understand
嵌入式代码查看分析利器---Understand
  不过我一般习惯在将Understand的工程文件单独放在另外的目录里面。这样查看别人的代码时,不会破坏keil工程文件的完整性。

  接下来在Understand软件中新建工程,选择文件–新建–工程。
嵌入式代码查看分析利器---Understand
  在弹出的界面中点 添加文件夹按钮,添加要查看的keil工程文件夹。
嵌入式代码查看分析利器---Understand
  这里选择要查看的这个 FreeRTOS移植实验
嵌入式代码查看分析利器---Understand

  单击继续按钮

嵌入式代码查看分析利器---Understand
  选择第二个选项,不编译代码。
嵌入式代码查看分析利器---Understand
  接下来选择Understand工程文件存放目录,默认会创建在keil工程目录里面,在这里将工程目录设置为刚才新建code文件夹路径。
嵌入式代码查看分析利器---Understand
  单击后面的 … 按钮,将工程路径选择为code文件夹,然后点保存按钮。
嵌入式代码查看分析利器---Understand
  工程路径设置好之后,单击创建工程按钮,开始新建工程。新建工程的时候需要花费十几秒的时候对工程文件进行扫描,这里要耐心等待一会。
嵌入式代码查看分析利器---Understand
  工程扫描完成之后,就会自动出现一个工程文件分析的界面,在这个界面中可以看到工程里面各部分代码的占比情况。
嵌入式代码查看分析利器---Understand
  第一个图展示的是代码、注释、未使用、预编译、空白 这些占用行数。
嵌入式代码查看分析利器---Understand
  第二张图展示的是不同代码在工程中的占比。通过这个可以看出FreeRTOS占30.1%,库函数占了62.7%。
嵌入式代码查看分析利器---Understand
  通过下面的柱形图中还能看出比较占比比较大的函数和文件。
嵌入式代码查看分析利器---Understand
  通过这个整体的分析图让我们对这个工程文件构成有一个整体的印象。下面开始使用这个软件对代码进行具体的分析。在软件界面的左侧选择工程浏览,然后打开user文件夹里面的main.c文件。
嵌入式代码查看分析利器---Understand
  在main.c文件中双击选中main函数,然后再工具栏中点这个连接按钮。
嵌入式代码查看分析利器---Understand  在这里选择第一个选项
嵌入式代码查看分析利器---Understand
  此时就会显示出main函数中调用了哪些函数。嵌入式代码查看分析利器---Understand
  这里默认情况下只显示了1层的调用关系,如果要显示多层调用关系还需要设置一下。界面有右上方有两个 三条横线的图标,点击下面这个三条横线图标。
嵌入式代码查看分析利器---Understand

  将这个被调用的深度设置为3。
嵌入式代码查看分析利器---Understand

  接着把调用深度也设置为3。

嵌入式代码查看分析利器---Understand
  接下来就会重新生成一个函数调用关系图。
嵌入式代码查看分析利器---Understand
  滚动鼠标滚轮可以放大缩小这个关系调用图。嵌入式代码查看分析利器---Understand
  通过这个关系调用图就可以很清晰的看出来main函数分别调用了哪些函数,而这些函数里面又继续调用了哪些函数。这样即使不用看代码直接通过这个函数调用关系图就能看出来main函数里面都完成了哪些功能。

  接下来依然选择main函数,在关系调用中选择第二个功能。
嵌入式代码查看分析利器---Understand
  通过右上角的的选项按钮将层设置为5,这样就会显示出一个5层的调用关系图。
嵌入式代码查看分析利器---Understand
  在这个调用关系中可以看到,好多函数都调用了同一个函数。而有些函数是我们不需要关系的,那么就可以在这个函数上单击鼠标右键,选择隐藏,将这个函数隐藏掉不显示。
嵌入式代码查看分析利器---Understand
嵌入式代码查看分析利器---Understand

  如果想要重点关系某一个函数的调用关系,可以在函数上右键,选择高亮显示。比如在这里要重点关心任务创建函数。
嵌入式代码查看分析利器---Understand
  此时任务创建函数前面和它相关函数和路线都会被高亮显示。
嵌入式代码查看分析利器---Understand
  如果想进一步了解这个函数的其他信息,可以在这个函数上单机鼠标右键,在属性中查看,这里就不再一一列举了。
嵌入式代码查看分析利器---Understand
  接下来看关系调用的第三个选项。
嵌入式代码查看分析利器---Understand
  此时就会生出一个main函数内部的执行流程。
嵌入式代码查看分析利器---Understand
  接下来看关系调用的第四个选项。
嵌入式代码查看分析利器---Understand
  这个列出来了main函数调用的函数和main函数的返回值。
嵌入式代码查看分析利器---Understand
  接下来看关系调用的第五个选项。
嵌入式代码查看分析利器---Understand
  这个列出来了main函数所包含的头文件和宏定义
嵌入式代码查看分析利器---Understand
  接下来看关系调用的最后一个选项。
嵌入式代码查看分析利器---Understand
  这个会显示出main函数调用的那些初始化函数都包含在哪些c文件中。
嵌入式代码查看分析利器---Understand
  通过上面这个6种功能,可以对main函数和其他函数的调用关系进行各种方式的分析,让我们对这个工程代码能进一步的深入了解。

  同样Understand软件也可以直接查看代码。如果要掉转到函数内部时,按住ctrl键,单击鼠标左键,就能直接跳转到函数中。后退一步的快捷键是ctrl+alt+p 。
嵌入式代码查看分析利器---Understand
嵌入式代码查看分析利器---Understand
  如果想要使用快捷键的话,可以在菜单栏选择Tool—options
嵌入式代码查看分析利器---Understand
  在打开的设置界面中选择Key Bindings,在右边区域中就可以查看和设置快捷键。
嵌入式代码查看分析利器---Understand
  查看函数的时候,在函数开始位置的大括号处双击鼠标左键,就会自动选中函数所包含的代码块。
嵌入式代码查看分析利器---Understand
  将鼠标放在函数名上面时,会显示函数的参数和返回值。同样将鼠标放在宏定义的值上时,会显示宏定义的值。
嵌入式代码查看分析利器---Understand
嵌入式代码查看分析利器---Understand
  这个软件还有很多强大的功能,在这里只是粗略的介绍了一下,其他功能大家在使用的过程中自己慢慢探索。文章来源地址https://www.toymoban.com/news/detail-429182.html

到了这里,关于嵌入式代码查看分析利器---Understand的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C语言】嵌入式C语言项目管理利器:深入理解Makefile的应用与实践

    目录 一、makedile的概述 1、案例引入 2、makefile  3、Makefile优点 二、makefile的语法规则  1、语法规则 2、简单实战 三、makefile的变量 1、自定义变量 2、系统环境变量 3、预定义变量 4、高级makefile gcc a.c b.c c.c ‐o main 如果只修改了b.c 使用gcc编译 需要对所有文件重新编译。makefi

    2024年02月15日
    浏览(53)
  • 嵌入式软件调试与验证4自动重现和分析嵌入式软件中的Bug

    嵌入式软件的重要性逐年增加。ISO26262标准的最高安全级别要求十个9小时内无故障运行。然而,历史上的一些项目表明,即使进行了全面的测试,多年来仍有许多错误未被发现。航天飞机的控制计算机仅有50万行源代码,却经过了长达8年的测试,每行源代码耗资1000美元,即总

    2024年02月08日
    浏览(52)
  • 【ARM 嵌入式 编译系列 3.4 -- 查看所依赖库文件的路径 详细介绍】

    请阅读 【嵌入式开发学习必备专栏 之 ARM GCC 编译专栏】 在自己构建的 Makefle系统中对 cortex-m33 代码编译时,在链接阶段总是报出下面问题 从报错信息可以看出来是没有找到对应 lib 文件,所以应该是链接脚本中没有设置正确库文件的路径,但是又不知道需要使用哪些库,及

    2024年02月02日
    浏览(78)
  • 【嵌入式】ELF格式文件分析工具汇总

    🧑 作者简介 :阿里巴巴嵌入式技术专家,深耕嵌入式+人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍 :分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向的学习指导、简历面试辅导、技术架构设计优化、开发外包等

    2024年03月10日
    浏览(152)
  • 车载基础软件——嵌入式系统时间特性分析

    我是穿拖鞋的汉子,魔都中坚持长期主义的工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 人们会在生活中不断攻击你。他们的主要武器是向你灌输对自己的怀疑:你的价值、你的能力、你的潜力。他们往往会将此伪装成客观意见,但无一例

    2024年02月05日
    浏览(57)
  • 嵌入式系统入门基础知识分析(一)

      目录 ​编辑 一、什么是嵌入式 二、嵌入式系统的组成 三、实时系统 四、实时系统的调度 五、嵌入式微处理器体系结构 六、逻辑电路基础 七、总线电路及信号驱动 八、电平转换电路 九、嵌入式系统中信息表示与运算基础 十、差错控制编码 十一、嵌入式系统的度量项目

    2024年02月05日
    浏览(62)
  • 嵌入式 QT纯代码设计UI

        目录 1.1 实例功能 1.2 界面创建 1.3 界面组件的创建与布局 1.4 信号与槽的关联 UI 的可视化设计是对用户而言的,其实底层都是 C++ 的代码实现,只是 Qt 巧妙地进行了处理,让用户 省去了很多繁琐的界面设计工作。   由于界面设计的底层其实都是由 C++ 语言实现的,底层

    2024年03月09日
    浏览(49)
  • 嵌入式硬件库的基本操作方式与分析

    本次要介绍的开源软件是 c-periphery: 一个用 C 语言编写的硬件外设访问库。 我们可以用它来读写 Serial、SPI、I2C 等,非常适合在嵌入式产品上使用。 我们可以基于它优秀的代码框架,不断地扩展出更多的功能模块,最终形成自己产品适用的 Linux 硬件抽象层。 源文件: 约

    2024年02月06日
    浏览(46)
  • 嵌入式系统中C++ 类的设计和实现分析

    C++ 代码提供了足够的灵活性,因此对于大部分工程师来说都很难把握。 本文介绍了写好C++代码需要遵循的10个最佳实践,并在最后提供了一个工具可以帮助我们分析C++代码的健壮度。 原文:10 Best practices to design and implement a C++ class。 1. 尽可能尝试使用新的C++标准 到2022年,

    2024年02月06日
    浏览(31)
  • 嵌入式学习笔记(17)代码重定位实战 上篇

    3.5.1任务:在iSRAM中将代码从0xd0020010重定位到0xd0024000 注解:本练习对代码本身运行无实际意义,我们做这个重定位纯粹是为了练习重定位技能。但是某些情况重定位就是必须的,譬如在uboot中。 3.5.2思路 (1)通过链接脚本将代码链接到0xd0024000(链接地址) (2)使用dnw下载时将

    2024年02月09日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包