本学期boss讲授Linux内核,准备跟着进度入门一下。首先说下参考书。
主要参考书:
Linux内核设计与实现 Robert Love
深入理解Linux内核
个人觉得还可以结合看下Professional Linux Kernel Architecture(by Wolfgang Mauerer)
深入那本是针对2.6.11版本源码,后一本是针对2.6.24版本,而情景分析针对2.4版本,暂时先放一放(这本关于Boot这块分析很详细)。而对于一些数据结构及其算法可结合算法导论认真学习。
这篇introduction性质的笔记主要介绍一下windows及Linux平台下阅读源码的两个常用软件。SourceInsight & (vim + cscope + tags)
一、SourceInsight
安装步骤网络上有很多图文并茂的教程,在此就不多说。以下记录几个常用快捷键。
1、按住"ctrl", 再用鼠标指向某个变量,点击进入这个变量的定义
2、选上"view --> draft view",让每个字符的宽度一致,快捷键是 "Alt + F12"
3、"shift+F8" 标亮所有文本中光标所在位置的单词
4、跳到某一行:"ctrl + g"
5. alt+up/down 上下移动一行浏览
二、vim + cscope + tags
1. 软件安装(ubuntu)
sudo apt-get install cscope
安装ctags: http://ctags.sourceforge.net/,然后ctags -version查看当前ctags的版本是否是emacs的。
若安装了emacs就必须使用上面这个地址的ctags,vim不支持emacs的ctags,所以要下载安装这个ctags,下载之后在源文件所在目录运行
./configure,make,生成ctags文件,将这个文件保存到“/usr/bin/”目录下。
2. 生成索引文件
make cscope
make tags
ls tags -l, ls cscope.* -l
3. 一般源文件中生成索引文件
编写如下脚本
---------------------------------------------------------------------------------
#!/bin/sh
find . -name "*.h" -o -name "*.c" -o -name "*.cc" > cscope.files
cscope -bkq -i cscope.files
ctags -R
---------------------------------------------------------------------------------
4. 在VIM使用cscope查找
在源代码目录下打开vim,加载cscope.out文件,在vim命令行下执行:
:cs add cscope.out
vim命令行下执行:
:cs help
例:查找do_fork函数定义 :cs f g do_fork
5. 在VIM中使用tags查找符号
:tag xxx
6. 其它命令
ctrl+]:在函数调用的地方跳转到函数定义的地方
ctrl+t:返回上一个查找的地方
7. 特别注意
所生成的cscope.out和tags文件要在打开VIM所在的文件夹,否则VIM无法找到相关符号信息