品牌型号:惠普 240 G3
系统:Windows 10 专业版
软件版本:Source Insight 4.0
很多开发人员都会使用Source Insight,特别是面对那种动不动就几万行的大项目。它不仅能帮我们快速定位,更能理清庞杂的项目结构,Linux内核代码就是一个很好的例子。以下就是Source Insight如何搜索文本内容,Source Insight如何查看Linux源码的相关内容。
一、Source Insight如何搜索文本内容
想快速看懂代码,得能迅速找到想看的地方。Source Insight有几种实用的小功能,用好了能帮我们准确定位。
1、在当前文件里速查
想在自己正看的文件里找内容,最省事的办法就是直接按 Ctrl + F。搜索框一出来,把关键字输进去敲个回车,立马就能跳到第一个找到的地方,用起来特别方便。

要是想让结果更准一点,可以看看左侧的那些选项。“Case Sensitive”勾上以后,它就会区分大小写了;再把“Whole Words Only”也选上,它就只认完整的单词了。比如说搜open,就不会把opening这种词也给带出来。
2、在整个项目里全局搜索
想知道一个函数或者变量在项目里哪儿都用到了?直接全局搜索就行。点一下菜单栏的 Search,找到 Lookup References 就能打开这个搜索界面。

打开之后,在 Find 框里填上要找的东西,比如例子里的 calculateCircleArea。我们想进行文本搜索的话,在 Search Method 那个下拉菜单里选 Simple String(简单字符串匹配)就可以了。

Search In 下拉菜单,就是让我们选搜索范围。只想在当前这个文件里找(选Current File),还是想直接在整个项目里搜索也行(选All Project Files)。
右边的Options区域有不少筛选条件:
Case Sensitive (区分大小写)和 Whole Words Only (全字匹配)是基础功能,保证搜索的准确性。
Skip Inactive Code 和 Skip Comments 前者能自动跳过被#ifdef等条件编译包围的代码,后者能忽略注释内容,让结果列表干净许多。
Smart Reference Matching(智能引用匹配)在用Simple String模式时不生效,它更适用于基于符号的智能查找。
把这些选项按照实际需求组合起来,基本上各种搜索场景都能覆盖了。
二、Source Insight如何查看Linux源码
用Source Insight可以很方便的读Linux内核代码。下面是对Linux内核代码的了解以及操作技巧,帮我们快速上手。
1、Linux内核代码有什么特别之处?
Linux内核的代码量确实很大,不过它的目录结构倒是挺清楚的。不同的功能模块都放在各自的文件夹里,比如进程调度相关的在kernel/下面,内存管理的在mm/目录下,而drivers/里面是硬件驱动。为了能让同一套代码跑在不同设备上,它用了特别多的条件编译(就是那种#ifdef CONFIG_XXX),很多跟硬件相关的部分,就是用汇编来写的。搞清楚这些特点之后,大概就能体会到,找一个好用的源码阅读工具是多么重要了。
2、先给内核源码创建工程
打开Source Insight软件,找到Project菜单然后选New Project来新建一个工程。名字起个好记的就行。设置“Project Source Directory”时,得把它指向存放Linux内核源码的文件夹位置。

接着,在弹出的添加文件窗口里,直接点一下“Add Tree”按钮。这个功能挺方便的,它能自动把源码根目录下,所有子文件夹里的文件都加进来,省得一个个去选了。就像下面这张图展示的,一下子就添加了两万多个文件。

文件都加进去之后,别忘了点一下Project菜单里的Synchronize Files,做一次完整的同步。最好把“Force all files to be re-parsed”的选项勾上,然后点Start。这个操作会让Source Insight给所有代码建一个索引库,以后想跳转或者查找引用就全靠它了。内核的代码量特别大,同步的时候可能需要多等一会儿。

3、开始高效阅读
用Ctrl键加鼠标点一下,就能直接跳到函数或者变量的定义位置。
要是想看看某个符号在哪儿被调用了,就用前面提过的全局搜索,一搜就出来了。

遇到复杂的调用关系,可以试试看菜单栏的View,选择Panels,下面有个Relation Window,把它打开就行。这个窗口能把函数之间谁调用了谁的关系,直接画成一张图。这样一来就清楚多了,对于理清代码,帮助挺大的。

4、读内核的实用技巧
内核代码里有很多条件编译,经常干扰阅读主线。这时可以用Source 的“Conditional Parsing”(条件解析)功能。在Project -> Project Settings...的Conditions里找到它。
比如,我们主要关注ARM64平台,就可以在这里Add CONFIG_ARM64这个符号,将它设置为1,如果不关注可以设置为0。

设置完后,务必再执行一次同步,你会发现,设置为0的代码块都变灰了,浏览起来清爽很多。比如下图中,CONFIG_X86_AMD_PLATFORM_DEVICE条件编译的代码块变成灰色了,而CONFIG_ARM64的代码保留。

希望这些技巧能帮你更快地上手阅读Linux。
以上就是关于Source Insight如何搜索文本内容,Source Insight如何查看Linux源码的全部内容了。Source Insight的文本搜索和工程管理能力,确实是我们探索Linux内核这类复杂项目的好帮手。这些功能用熟了,慢慢就能轻松看懂庞大的代码了。希望以上分享对你有帮助。
