Source Insight 函数调用关系使用技巧

Posted Li-Yongjun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Source Insight 函数调用关系使用技巧相关的知识,希望对你有一定的参考价值。

用处

要想了解大型工程的运行原理和过程,分析其函数调用关系是一个很有用的方法。比起自己一个个搜索、记录,使用工具效率会更高。Source Insight 就有一个显示函数调用关系的功能,非常好用。

PS:之前我都是手动搜索、记录,去理清函数调用关系。甚至添加打印,在程序运行时理清函数调用关系。现在回想起来好低能且低效。

操作

如图所示,点击①处的【Relation Window】按钮,就会出现右侧【Relation】窗口。该窗口下方有三种显示模式可供选择,我比较喜欢垂直的图像显示模式(如果调用关系能从上到下显示,而不是从下到上显示,就更好了),并且该窗口默认只显示一层调用关系,我们需要显示更多,这个后面会讲。当你随便点击源码中的某个函数或变量时,【Relation】窗口就会展示出该函数或变量的调用关系。

如果有时点击了函数,【Relation】窗口中的图像没有变化,可以点击②处的按钮重新生成一下。

过滤

不过,可以看到,【Relation】窗口中的函数调用关系貌似有点问题

怎么 hostapd_add_iface 显示调用了它自己,看代码也没发现它是递归函数呀,怎么回事。仔细看了一下,发现这两个函数前的图标不一样,鼠标悬停在它俩上方,发现下边那个是函数声明,上边那个才是函数定义。显然,我们只关心函数定义,声明在这里只会徒增麻烦,那怎样才能去掉呢?

点击【Relation】窗口下方的设置按钮,会弹出【Relation Window Options】窗口,上文中提到的层级也是在这里设置的,我这里设置为了最大也就是 10 级。然后点击【Symbol Types Filter】按钮,取消勾选【Function Prototype】,勾选这个选项会显示函数原型,也就是函数声明

点击【OK】,然后【Relation】窗口就变成了下图

很清晰明了了有木有。

优化

还没完,我们还可以点击【Graph Options】来修改显示元素的属性,让显示更加美观。

修改后

完结!

以上是关于Source Insight 函数调用关系使用技巧的主要内容,如果未能解决你的问题,请参考以下文章

Source Insight 函数调用关系使用技巧

source insight怎么生成函数调用关系图?

带有选项卡式窗口和分隔线的 Source Insight 类型编辑器?

source insight查看函数的上一级调用

如何使用source insight

source insight看代码的坑!!!