windows下阅读linux内核源代码的强大工具软件Source Insight
参考资料:韦东山编《嵌入式linux应用开发完全手册》
source insight的强大我就不说了,谁用谁知道,但强大功能的背后都有一套复杂的使用方法,动辄几十页的说明文档看着就头疼,真正常用的功能就那么几个,在此介绍下针对嵌入式linux爱好者的souceinsight的快速入门,希望对大家有用。
source insight 是windows下非常强大的程序代码阅读和编辑工具。特别是阅读程序中的某个宏或函数时,需要了解该函数的原型却不知道该函数是在本文件还是头文件中定义的,这时可利用source insight把该文件和用到的头文件添加到一个项目中,阅读程序文件时,只用单击某函数或宏,其原型会在上下文窗口中自动显示。
这个功能在阅读linux源代码和别人的项目程序时非常有用。强烈推荐。
source insight 会将程序中的全局变量、局部变量表上不同的颜色;光标移到某个变量、函数上时,窗口下方会自动显示他们的定义;可快速找到函数间的调用关系;编辑代码时,变量名、函数名会自动补全。
下面以创建一个基于arm的linux内核源码项目为例介绍source insight的使用。PS:linux的内核源码大部分为C文件,因此建立的项目语言类型为C,但是也存在汇编.S文件,因此要建立的项目包括的文件类型应包括
- 创建一个c语言的source insight 工程。启动source insight->菜单option->Document Option->Document Type(C Source File),file filter中添加*.s,*.S类型,之后单击close关闭窗口。
- 单击菜单Project->New Project->输入工程名和保存路径。
- 指定源码的源码的存放位置后,单击 Ok 按钮进入 add and remove project files 界面。在此界面下选择linux源代码存放的路径,如果不在上面显示的盘符下,可在file names窗口中输入路径,如输入E:\后回车,就进入了E盘目录下。
add 添加选中的文件和文件夹下的文件
add all 添加file name目录框下的所有文件夹下的文件。单击add all按钮时在弹出的对话框中要选中include top level sub-directories 选项和recursively add lower sub-directories选项,表示递归添加子文件夹下的所有文件
add tree 递归添加选中的文件夹中的所有文件(包括子文件夹)
remove tree 删除选中的目录下的所有文件夹和文件
在此先添加linux源代码下的所有文件夹
4. 删除内核目录中用不到的文件
由于linux支持多个架构的CPU,而在此只关心S3C24**目标板,所以可以在工程中删除不相关的文件。
要删除的目录如下:
arch 目录下除 arm 外的所有目录
arch/arm 目录下以 mach 开头的目录(mach-s3c2410和mach-s3c2440除外)
arch/arm 目录下以 plat 开头的目录(plat-s3c24**除外)
include目录下以 asm 开头的目录(asm-arm、asm-generic除外)
include/asm-arm目录下以arch开头的目录(arch-s3c24**除外)
至此,工程建立完毕。
5 建立数据库(同步源文件)
建立的数据库的作用是保存项目源文件中个变量、函数之间的关系,这样编辑代码时source Insight可快速的提供各种辅助信息。
方法:菜单project->synchronize files->选中force all files to be re-parsed(强制分析所有文件),然后单击Ok按钮即可生成数据库。
6 主界面介绍:左侧为 符号窗口,显示当前文件中的变量、函数、宏定义等。
下边为 上下文窗口 在代码窗口中单击某变量,函数,宏的时候,此窗口会显示他们的定义
7 使用技巧。在某个变量、函数、宏上右击,在弹出的菜单中选择lookup reference,可以快速的找到所有源文件对他们的使用,当然定义也在里面。也可单击窗口上侧的“R”图标,输入要查询的变量或其他,也可进行搜索。
其他使用技巧可参考各种souce insight使用说明和帮助文档。在此不一一赘述。