首页>软件资讯>常见问题

常见问题

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

发布时间:2024-01-16 13:59:37人气:229


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


  为了提高开发效率,一般查看代码的时候会使用vscode 和 source insight 这类软件,但是vscode占用内存比较大,电脑配置比较低的话,电脑就会比较卡。source insight占用内存比较小,功能和使用方法上感觉没有vscode方便,但是source insight 有个优点就是可以查看函数调用关系图。

       查看函数关系图.png

  这个功能用起来感觉很方便,特别是查看别人代码的时候,能有一个直观的感受。于是平时就是vscode 和 source insight 这两个软件交替使用。

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

       Understand 强大函数关系图.png

  下面就详细说一下如何使用Understand软件。联系本站客服下载Understand软件,很简单,一直安装指示下一步即可。


  下载安装完成之后,打开软件。

        打开软件.png

  如果要查看代码的话,不能像vscode那样直接把文件夹拖入到软件界面中直接打开。要使用这个软件必须给要查看代码先建一个工程。

  在桌面上新建一个code文件夹准备存放Understand的工程文件,FreeRTOS移植实验是要查看的代码。也可以不新建code文件夹,Understand的把工程文件直接存放在FreeRTOS移植实验里面。

        文件.png

  不过我一般习惯在将Understand的工程文件单独放在另外的目录里面。这样查看别人的代码时,不会破坏keil工程文件的完整性。

  接下来在Understand软件中新建工程,选择文件–新建–工程。

        选择新建.png

  在弹出的界面中点 添加文件夹按钮,添加要查看的keil工程文件夹。

        查看工程文件.png

  这里选择要查看的这个 FreeRTOS移植实验

        查看实验.png

  单击继续按钮

  选择第二个选项,不编译代码。

       选择不编辑选择.png

  接下来选择Understand工程文件存放目录,默认会创建在keil工程目录里面,在这里将工程目录设置为刚才新建code文件夹路径。

        选择Understand工程文件存放目录.png

  单击后面的 … 按钮,将工程路径选择为code文件夹,然后点保存按钮。

        保存.png

  工程路径设置好之后,单击创建工程按钮,开始新建工程。新建工程的时候需要花费十几秒的时候对工程文件进行扫描,这里要耐心等待一会。

        扫描.png

  工程扫描完成之后,就会自动出现一个工程文件分析的界面,在这个界面中可以看到工程里面各部分代码的占比情况。

       工程文件分析的界面.png

  第一个图展示的是代码、注释、未使用、预编译、空白 这些占用行数。

        1.png

  第二张图展示的是不同代码在工程中的占比。通过这个可以看出FreeRTOS占30.1%,库函数占了62.7%。

         2.png

  通过下面的柱形图中还能看出比较占比比较大的函数和文件。

       3.png

  通过这个整体的分析图让我们对这个工程文件构成有一个整体的印象。下面开始使用这个软件对代码进行具体的分析。在软件界面的左侧选择工程浏览,然后打开user文件夹里面的main.c文件。

       4.png

  在main.c文件中双击选中main函数,然后在工具栏中点这个连接按钮。

  在这里选择第一个选项

        5.png

此时就会显示出main函数中调用了哪些函数。

       出现的函数.png

  这里默认情况下只显示了1层的调用关系,如果要显示多层调用关系还需要设置一下。界面有右上方有两个 三条横线的图标,点击下面这个三条横线图标。

        调用.png

  将这个被调用的深度设置为3。

         深度设置.png


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

        着色深度.png

  接下来就会重新生成一个函数调用关系图。

        跳出的调用关系图.png

  滚动鼠标滚轮可以放大缩小这个关系调用图。

  

  通过这个关系调用图就可以很清晰的看出来main函数分别调用了哪些函数,而这些函数里面又继续调用了哪些函数。这样即使不用看代码直接通过这个函数调用关系图就能看出来main函数里面都完成了哪些功能。

  接下来依然选择main函数,在关系调用中选择第二个功能。

         第二个功能.png

  通过右上角的的选项按钮将层设置为5,这样就会显示出一个5层的调用关系图。

       关系图.png

  在这个调用关系中可以看到,好多函数都调用了同一个函数。而有些函数是我们不需要关心的,那么就可以在这个函数上单击鼠标右键,选择隐藏,将这个函数隐藏掉不显示。


  如果想要重点关心某一个函数的调用关系,可以在函数上右键,选择高亮显示。比如在这里要重点关心任务创建函数。

         

  此时任务创建函数前面和它相关函数和路线都会被高亮显示。


  如果想进一步了解这个函数的其他信息,可以在这个函数上单击鼠标右键,在属性中查看,这里就不再一一列举了。

         函数.png

  接下来看关系调用的第三个选项。

         第三个选项.png

  此时就会生出一个main函数内部的执行流程。

         执行流程图.png

  接下来看关系调用的第四个选项。

         第四个选项.png

  这个列出来了main函数调用的函数和main函数的返回值。

        返回值.png

  接下来看关系调用的第五个选项。

        第五个选项.png

  这个列出来了main函数所包含的头文件和宏定义

        头文件和宏定义.png

  接下来看关系调用的最后一个选项。


  这个会显示出main函数调用的那些初始化函数都包含在哪些c文件中。

         文件.png

  通过上面这个6种功能,可以对main函数和其他函数的调用关系进行各种方式的分析,让我们对这个工程代码能进一步的深入了解。

  同样Understand软件也可以直接查看代码。如果要跳转到函数内部时,按住ctrl键,单击鼠标左键,就能直接跳转到函数中。后退一步的快捷键是ctrl+alt+p 。

        跳转函数.png

  如果想要使用快捷键的话,可以在菜单栏选择Tool—options


  在打开的设置界面中选择Key Bindings,在右边区域中就可以查看和设置快捷键。

        key.png

  查看函数的时候,在函数开始位置的大括号处双击鼠标左键,就会自动选中函数所包含的代码块。

        代码.png

  将鼠标放在函数名上面时,会显示函数的参数和返回值。同样将鼠标放在宏定义的值上时,会显示宏定义的值。

        显示值.png

  这个软件还有很多强大的功能,在这里只是粗略的介绍了一下,其他功能大家在使用的过程中自己慢慢探索。



上一条:ASPEN模拟的蒸发结晶工艺

下一条:程序员必备的代码阅读工具Scitools Understand