背景
最近过年,和朋友在外面算是玩 high 了。快活了一周之后,玩也玩得差不多了,觉得还是得找点正事做做。于是找来了一个微型操作系统 ucore 分析源码。虽然说是小型的 OS ,但也有接近一万行代码,而且代码中逻辑和函数交互也不少,这可有点棘手。翻了翻实验指导书,发现指导书的 doc 上给了具体的解决办法。
函数调用可视化
看了看官方给的 ucore 实验指导书,发现里面有提到一个叫 Understand 的代码分析工具,可以将函数调用关系可视化,大概效果是这样的:


解释一下。当:
1.箭头始末是函数时,表示始端函数调用末端函数;
2.箭头始末是文件名时,表示始端文件中有函数调用了末端文件中的函数。
鼠标右键单击绿色边,显示具体的调用信息。除此以外,还可以跳转到源文件中函数调用处。比如下面第二张图中的第229行代码,即是下面第一张图中点击后跳转过来的。

鼠标右键单击绿色边,显示具体的调用信息。其中第1、2、3次调用均在 mksfs.c文件的第229行 |
---|

下载方法
在官方网站下载自己电脑对应版本,我自己是在 Ubuntu 上操作,而 Ubuntu 属于 Linux 系统,于是便下载 Linux 版本

下载完成之后,是一个压缩包,需要解压

解压后是这样。出现一个 scitools 文件夹,进入它

打开 scitools/bin/linux64/understand 即可成功运行

打开之后软件可能会提示你要交钱,不过不用担心。直接点击带 trial 字样的按键,然后填上自己的电子邮箱便可以免费体验了。
使用方法

左上角 File —> New —> Project 创建一个新项目 |
---|

点击 Add Directory 为项目添加文件夹 |
---|
Add Directory 添加你想要察看代码结构的文件的父级文件夹。我自己选择的是 ucore 实验中的保存第4个实验代码所用的文件夹

直接选 No,无需编译

进入项目后在左侧 Browser 中选中文件或者文件夹,再点击上方工具栏中的 Graphs 即可


最后的话
Understand 其实是一款很强大的代码分析工具,因为本人做 OS 实验只用到了 Graph 功能,所以也只写了这部分相关的内容。Understand 还有很多其他的功能,有兴趣的朋友可以自己慢慢发掘。
最后祝大家新年快乐,不管是在代码里还是生活中,都能够玩得开心!