http://blog.csdn.net/luckyaslan/article/details/7869235

Step 1:安装Source Insight并启动程序

可以进入图1界面,在工具条上有几个值得注意的地方,如图所示,图中内凹左边的是工程按钮,用于显示工程窗口的情况;右边的那个按钮按下去将会显示一个窗口,里边提供光标所在的函数体内对其他函数的调用图,通过点击该窗体里那些函数就可以进入该函数所在的地方。

图1 Source Insight界面图

由于Source Insight实质上是一个支持多种开发语言(java,c ,c++等等)的编辑器,只不过由于其查找、定位、彩色显示等功能的强大,而被我们当成源代码阅读工具使用。

Step 2:新建项目

首先必须选择功能菜单上的 “Project”选项的子菜单“New Project”新建一个项目,项目名称可以自由选定,当然也可以选择删除"Remove"一个项目。(PS:当删除一个项目的时候,并不删除原有的源代码文件,只是将该软件生成的那些工程辅助文件删除。)设定之后,将会弹出一个对话框如图2,接受默认选择,如果,硬盘空间足够,可以将第一个复选框选上,该选项将会需要与源代码大致同等的空间来建立一个本地数据库以加快查找的速度。

图2 工程设置

Step 3:添加文件

点击“OK”按钮,接受选择后,将会有一个新的对话框弹出,可以选择将要阅读的文件加入工程,一种方式是通过在File Name中输入要阅读源代码文件的名称,点击“Add”按钮将其加入,也可以通过其中“Add All”和“Add Tree”两个按钮可以将选中目录的所有文件加入到工程中,其中“Add All”选项会提示加入顶层文件和递归加入所有文件两种方式,而“Add Tree”相当于“Add All”选项的递归加入所有文件,可以根据需要使用,此处选择“Add Tree”,由于该程序采用了部分打开文件的方式,没有用到的文件不会打开,所以,加入数千个文件也不用担心加入的文件超出程序的所能容忍的最大值。
图3 添加文件

Step 4:同步文件

点击[Project], 在下拉列表中单击[Synchronize File...]选项,此过程需要20~30分钟左右。

Step 4:窗口说明

加入文件后,点击一个文件,可以出现使用界面,如图4所示,其中,右边的那个窗口(Linux Project,即工程窗口)缺省按照字母顺序列出当前工程中所有的文件。

图4 工作窗口

点击一个文件就可以打开该文件,显示如图5所示,进入到右边的那个窗口分别可以以文件列表的方式,列出所有的文件,每个窗体下边有一排按钮。

左边的窗口(21142.c)从左至右分别为:按字母顺序排列所有标记、按照文件中行数顺序排列标记、按照类型排列标记、浏览本地文件标记、标记窗口属性。

右边的窗口(Linux Project)从左至右分别为:按字母顺序文件列表、显示文件夹、按照文件类型归类文件、全部文件的所有标记列表、按照标记类型归类标记、跳转到定义处、显示标记信息、浏览工程标记、查找函数调用、工程属性,其中全部文件的所有标记列表选项可能要一段时间抽取标记,同步到数据库去,如果开始选择了建立标记数据库,将会在今后节省同步时间。

最有用的莫过于浏览标记信息和查找函数调用,前者可以通过“Jump”按钮在不同的地方查找同样的标志,还可以通过“Reference”按钮结合后者进行全局的标记查找。

Reference功能是Source Insight的特色之一,它可以在速度极快的在整个工程中找到所有的标记,并且在该行程序的前边加上红色箭头的小按钮链接上。图6是一个Reference搜索后的结果,它可以有两种模式,一种集中显示结果,图6显示的就是这种模式,在这种模式下,可以通过前边的红色箭头小按钮进入另外一种模式,该标记的具体的所在处,也可以通过标记的具体所在处点击红色箭头小按钮进入警种模式,还可以通过工具条上的两个红色小箭头直接在第二种模式下前后移动,察看相应信息。它的这个强大的功能使得阅读Linux源程序有如神助。但是要注意的是,当进行了第二次“Reference”时,它会提示你将结果集附加在第一个结果集的后边还是取代第一个结果集。如果选择前者,不能对结果集根据前后两次搜索结果进行分类,然后在其子类里进行移动,只能在整个结果集里移动;如果,选择后者,结果集将会被替换为第二次搜索的结果,略微有些不方便。
图6 Reference的搜索结果

当然,Source Insight 还提供了一些其他常见的便利。比如:右键菜单几乎包含了程序的所有功能,可以在编辑窗口为程序加上行号,还可以统计整个工程的程序行数,当然还有功能强大却用不上自动完成功能。

转载于:https://www.cnblogs.com/xj626852095/p/3648233.html

阅读linux内核代码的工具-- Source Insight相关推荐

  1. Ubuntu14.04搭建LXR本地服务器阅读Linux内核代码

    CSDN GitHub Ubuntu14.04搭建LXR本地服务器阅读Linux内核代码 AderXCoding/system/tools/lxr 本作品采用知识共享署名-非商业性使用-相同方式共享 ...

  2. linux 内核编号含义_如何阅读linux内核代码?

    阅读代码从来就是不可行的方法,有篇文章详细讲了这个事,很多人都觉得应该多读代码, 读好的代码,比如Donald Knuth. 但事实上, 只要简单让你描述一下最近读了什么代码,绝大多数人都说不上.文章 ...

  3. 搭建Linux内核代码浏览工具LXR

    简介 LXR 是一个通用的源代码索引器和交叉引用器 它提供了一个基于 web 的可浏览任意定义以及任意标识的用法. 它支持很多种语言.在linux平台下,一款非常好用的源代码浏览工具.废话不多说,下面 ...

  4. Ubuntu 安裝 GNU Global(gtags) 阅读Linux内核源码

    CSDN GitHub Ubuntu 安裝 GNU Global(gtags) 阅读Linux内核源码 AderXCoding/system/tools/global 本作品采用知识共享署名-非商业性 ...

  5. 10分钟学会像大佬一样阅读Linux内核

    Linux内核代码的庞大令不少人"望而却步",究其原因可以总结为以下几点: 1.认为内核源码"高不可攀".其实内核源码分析的难度不在于源码本身,而在于如何使用更 ...

  6. 最小的linux内核代码,带你阅读linux内核源码:下载源码、编译内核并运行一个最小系统...

    要学习linux内核,先要能够编译内核,还需要了解内核如何启动根文件系统.这样你才能在修改linux内核代码之后,完成验证的过程. 本文教你完成下列过程: 1.下载linux并编译linux内核源码 ...

  7. Linux内核代码风格

    Linux内核代码风格 这是一个简短的文档,描述了linux内核的首选代码风格.代码风格是因人而异的,而且我不愿意把我的观点强加给任何人,不过这里所讲述的是我必须要维护的代码所遵守的风格,并且我也希望 ...

  8. Linux 内核代码行数达到 2700 万行量级

    来自:技术让梦想更伟大 截止到2020年1月1日09:00:10,Linux内核Git源码树中的代码达到了2780万行. phoronix网站统计了Linux内核在进入2020年时的一些源码数据并作了 ...

  9. linux内核源码只有makefile文件没有c文件,linux内核代码的编写初步以及makefile的配置...

    在linux内核代码开发中,头文件不能包含标准C头文件,只能采用GNC标准 而且内核开发中没有main函数,只有init 和 exit ,这是每个内核模块中必须要包含的函数模块. 在GNU C标准中, ...

  10. 谷歌喊话三星:别再搞 Linux 内核代码了,安卓安全也不保了

    聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 谷歌 Project Zero 团队表示,三星为阻止 Galaxy 手机遭攻击而修改了内核代码,但实际上引发了更多的安全漏洞. 谷歌安全 ...

最新文章

  1. android service intent-filter,如何在permission中加入intent-filter过滤器获取NotificationListenerService权限...
  2. 使用PowerShell调用MTools分析MongoDB性能并发送邮件
  3. 编程之美-2.14-求数组的子数组之和的最大值
  4. 你的灯亮着吗--随笔1
  5. php入门的ppt,php学习 字符串课件
  6. c/c++读取txt文件中指定行的内容_和尧名大叔一起从0开始学Python编程-简单读写文件
  7. Oracle导入TYPE对象报错ORA-02304
  8. 20190805:两个队列实现栈
  9. π-Algorithmist分类题目(2)
  10. SaaS应用“正益工作”发布,为大中型企业轻松构建移动门户
  11. linux大鹏命令百篇
  12. 2. CSS 高级语法
  13. 安卓开发 多语言strings.xml转excel表格,excel转strings.xml, excel转json (ExcelConversion)
  14. 【拆书】9000字总结,一文掌握737页程序员圣经《深入理解计算机系统》(第三版)重点
  15. 【Android】mina框架使用详情
  16. 如何用计算机打开苹果手机,苹果手机如何投屏到电脑
  17. 代价敏感随机森林Python附代码
  18. html,实现心动的表白代码
  19. 人工智能之高等数学2
  20. android客户端与pc服务器实现socket通信(wifi),Android客户端与PC服务器实现Socket通信(wifi)...

热门文章

  1. 只能上qq不能开网页_真实记录女友和我开工作室之旅4:7.1~7.5日志记录和总结...
  2. adb卸载手机内置软件
  3. [渝粤教育] 广东-国家-开放大学 21秋期末考试物权法10774k1
  4. 渗透-N种反弹shell方法
  5. 转载 SpringMVC详解(三)------基于注解的入门实例
  6. spring配置文件中导入约束的详细步骤
  7. Unity 2D角色复活点与复活等待时间设置
  8. python学习笔记之读取配置文件【转自https://my.oschina.net/u/3041656/blog/793467】
  9. CGLIB 和 JDK生成动态代理类的区别(转)
  10. No bean named 'xxxxxxx' available--springboot 上线打war包