vim+ctags+cscope 常用技巧和命令

首先声明,本文不适用于初学者!

1 编译ctags需要的文件

  #make ARCH=x86 tags

  ARCH=x86 的意思是除了索引指定的x86体系结构的代码外,不索引其他体系结构的想关代码

2 编译cscope需要的文件

  #make ARCH=x86 cscope

3 在vim中用ctags浏览

  ts do_fork  等同于光标停在do_fork上,再按CTRL + ]

  tn          下一个(next)

  tp          上一个(previous)

  tf          第一个(first)

  tl          最后一个(last)

4 在vim中用cscope浏览

 cs add cscope.out        #添加一个 connection,浏览内核时经常发现 cscope 链接断开

                          可以调用:cs a cscope.out

:cs show                  #显示所有 connections

:cs kill <#>              #杀死第#号 connection,第#号就是:cs show 显示出来的

:cs reset                 #reset 所有 connections

:cs find c|d|e|f|g|i|s|t

解释:

                     c   查找 name 被哪些函数调用

                     d   查找 name 调用了哪些函数

                     e   egrep 句型

                     f   查找名为 name 的文件

                     g   查找 name 的定义

                     i   查找#include 本 name 的文件

                     s   查找 name 这个 C 符号

                     t   查找何处对 name 赋值

        对 Linux 内核来说,如果既有 tags 文件,又有 cscope.out 文件,则 Vim 中:set cst

意味着使用 cscope 风格的^],也就是:tag 命令。 于是:

              如果想用 ctags 找到 do_IRQ:

              :ts do_IRQ

              如果想用 cscope 找到 do_IRQ:

              :ta do_IRQ

5 CTRL + T 返回上一步的操作处


最后给大家推荐一些内核相关的经典图书:

入门推荐: LKD2 - 《Linux 内核设计与实现-第 2 版》

      从入门开始,介绍了诸如中断、系统调用、虚拟文件系统、同步与互斥、

      内存管理、进程控制等方面,内容比较浅显易懂,是入门的好书。

      优点: 适合入门 (个人认为,没有比 LKD2 更优秀的内核入门图书)

      缺点: 内容不够深入,覆盖面不广。(对高手来说估计就像休闲材料)

3.1 ULK3 - 深入理解 Linux 内核-3rd

      一本很全面的 Linux 内核原理书。 书中以 2.6.11 为示例版本,着重讲述了

      x86 平台的 Linux 内核实现。

      优点: 深入,全面

      缺点: N/A

      我觉得看完 ULK3 就是高手了:)    而且由于书中着重介绍了 X86 体系结构,也称得

      上半个 x86 专家了。

3.2 《Linux 内核源代码情景分析》

      以 2.4.0 为例讲解,注重代码级别的剖析,对中断、内存管理、文件系统、

      SMP、PCI 和 USB、IPC 的讲解都是代码级别的深入细致。

      优点: 深入

      缺点: 针对的内核版本较旧,且每个「情景」都很长,不容易坚持读完。

      FYI : 新手不要从《情景分析》开始学习内核,这样只会增长你的学习周期。

3.3 LDD3 - Linux 设备驱动程序-3rd

    LDD3 写的很精彩。 但如果要学会写具体的驱动程序,还是得参照硬件的

    datasheet,读一个内核中现成的驱动程序。

    FYI : 内核中自带的驱动程序 skeleton:

            drivers/net/pci-skeleton.c 和 drivers/usb/usb-skeleton.c,分别是为 PCI/USB

            驱动程序员提供的参考代码。

    3.4 现代体系结构上的 Unix 系统 - 内核程序员的 SMP 和

Caching 技术

        这本书着重讲解各种体系结构上的 Unix 实现注意事项,e.g. SMP 的同步与互斥、

        Cache 一致性问题。

        优点: 作者知识面非常广,原理讲得很清楚。

        缺点: 94 年的书,比较旧

    3.5 Intel & AMD CPU 参考手册

        最好带着问题有针对性的去读 Intel & AMD 的手册。


你可能感兴趣的:(编程,linux,开发)