Linux内核基础——Linux源码阅读工具Source Insight4.0

Source insight4.0工具的使用入门

本篇博客为学习同步更新博客,学习如何使用source insight查看linux内核源码以及工具的使用技巧。
source insight4.0官方文档:https://www.sourceinsight.com/doc/v4/userguide/index.html#t=Manual%2FFrontMatter%2FFrontMatter.htm

一、Souce insight建立工程、导入源码

  1. Source insight建立工程
    在这里插入图片描述
  2. 点击OK进入工程设置页面,主要关注点在于内核源代码目录位置的设置
    在这里插入图片描述
  3. 之后会进入添加和删除工程文件的操作步骤(Add and Remove Project Files),此步骤目的是选择我们要使用的源代码导入到工程中,窗口右侧提供了Add、Add All 、Add Tree三种添加方法,可自行选择,这里直接选择Add Tree即可将我的linux-2.6.30-1的整个目录树中的文件导入进去。
    另外值得一提的是:左边的Directory窗口默认的目录选择为linux-2.6.30-1这一目录,是因为在上一步设置此目录为工程源码目录。
    在这里插入图片描述
  4. 导入完毕后点击close结束工程创建步骤。
    在这里插入图片描述
  5. 打开我们的工程窗口查看一下,是否所有的源文件已成功导入?
    在这里插入图片描述

二、遍历所有源码文件建立符号索引

在完成工程的创建之后,我们查看工程窗口(Project Window),发现Project Files的子页面里面成功导入了我们所有的源代码,但是查看工程符号索引页面(Project Symbols)却发现里面什么都没有。
在这里插入图片描述
随便阅读一个源码点击某个自定义的函数返回值,或者是宏定义发现也无法找到该自定义的函数或宏符号。在这里插入图片描述
这是因为我们没有让source insight分析我们的所有源代码建立符号索引表的数据库(建立一个高效的源码符号索引数据库是source insight的特色所在),因此我们需要进行工程同步分析
在这里插入图片描述
在这里插入图片描述然后耐心等待分析完毕后,发现我们的符号索引表(Project Symbols)建立成功,并且刚才无法找到的自定义符号位置也成功找到并跳转成功,发现它是个宏定义!接下来,你就可以快乐的进入源码阅读的步骤了。
在这里插入图片描述

三、源码阅读技巧

1、Relation窗口(某一函数或宏定义的调用或使用列表显示)

在上方的工具栏里点击我们的Relation Window按钮即可显示我们的Relation窗口,如果发现列表中无内容可以点击下方的刷新按钮进行刷新。Relation窗口提供了三种显示方法来显示某一自定义符号(函数或宏定义等)的调用或使用情况,包括调用或使用该符号的所有源文件位置、源文件中调用或使用该符号的行位置等信息。
下图例子显示了我们刚才测试的INIT_DELAYED_WORK宏定义的所有使用位置。
在这里插入图片描述
不同的显示视图不同的视图

四、入门级的使用总结

在这里插入图片描述源码编辑窗:光标移动到某一符号位置source insight会进行自动解析。 窗口1:解析显示该文件所有的符号,该窗口最下边的按钮栏提供了排序等功能。 窗口2:显示光标位置的符号在该文件中的所有使用或调用位置。 窗口3:显示光标位置的符号的定义位置(宏定义或函数定义等) 窗口4:Relation窗口,显示光标位置的符号在工程中所有源码文件中的使用或调用位置。 当想取查看其它源码文件时,就要在右上部分的菜单栏中呼出Project Window来选择其他源码文件。