zoukankan      html  css  js  c++  java
  • ctags查看内核源码

    先说说ctags吧!其实它只是用来生成一个tags文件,也就是把源代码中的对象找到、并记录下来,放到tags文件里。其他的工作就交给VIM来完成了。
    “tags” 文件中包括这些对象的列表:① 用#define定义的宏② 枚举型变量的值③ 函数的定义、原型和声明④名字空间(namespace)⑤ 类型定义(typedefs)⑥变量(包括定义和声明)⑦ 类(class)、结构(struct)、枚举类型(enum)和联合(union)类、结构和联合中成员变量或函数
    下面开始如何用VIM+ctags查看源码:
    首先,要安装ctags。
    wuting@wuting-desktop:~$ sudo apt-get install ctags
    然后,进入到源码目录下:使用ctags   -R命令生成tags文件。(参数-R表示,将该目录下所有的文件都包含在内)
    /*

    wuting@wuting-desktop:/usr/src/linux-2.6.30.5$ sudo tags -R
    也可以使用make tags命令,该命令只是将你选用的体系结构的文件包含到tags文件中。tags -R是将所有的体系结构都包含在内。
    wuting@wuting-desktop:/usr/src/linux-2.6.30.5$ sudo make tags
    这里可能需要一些时间,耐心等待,毕竟内核文件还是比较大的。

    */
    接下来,就可以使用命令查找你需要的函数或结构体之类的啦!一些常用的查找方法如下:
     1) 用命令行。在运行vim的时候加上"-t"参数,(这里一定要与生成tags文件时在同一目录下才可以)例如:
    # vim -t foo_bar
    这个命令将打开定义"foo_bar"(变量或函数或其它)的文件,并把光标定位到这一行。
     2) 在vim已打开的任意一个文件中,使vim处于命令模式下,使用":tag"命令,例如:
    :tagfoo_bar
    如果要查找的是结构体的定义可以使用ts命令,同样是在命令行模式下,输入:ts  XX(要找的结构体)
    这时vim会为你展现出许多个,用空格进行翻页,记下你要找的一个对应的数字,一直按空格键,直到提示你输入数字。输入对应的数字,回车就会跳转到你要查找的结构体定义处。
    3) 最方便的方法是把光标移到变量名或函数名上,然后按下" Ctrl-]";用"Ctrl-o"退回原来的地方。用 Ctrl-]延着调用树向前跳转, 用Ctrl-t向回跳转(当然啦,这是建立你已经打开文件的基础之上喽!)
     4) 分割窗口
    ":tag"命令会将当前窗口的文件替换为包含新函数的文件。怎样才能同时查看两个文件呢?你可以使用 ":split"命令将窗口分开然后再用":tag"命令。vim 有个缩写命令可以做到这些:
    :stag tagname
    使用下面的命令可以分割当前窗口并跳转到光标下的标签:
    Ctrl-w-]
    如果指定了计数参数,新窗口将包含指定的那么多行。
    有这些用法基本上就够用了,再多一些基本上就是VIM的灵活运用了。另外,如果这些还不能满足你的要求时,可以使用find和grep来帮忙。假如要找fork.c,就可以用在内核目录下输入:find  -name  fork.c
    wuting@wuting-desktop:/usr/src/linux-2.6.30.5$ find -name fork.c
    ./kernel/fork.c

         刚开始使用时也不能贪多,关键是要熟练的运用。如果一下子涉及的太多就可能会失去信心。(当然这是对于刚开始用,或者vim使用不熟练的人)。

    一些相关的插件介绍见:

    http://blog.csdn.net/nancygreen/article/details/5755190

  • 相关阅读:
    Bzoj4872: [Shoi2017]分手是祝愿
    大数据应用价值研究员--数据可视化工程师
    Angular Redux
    Reactive Redux
    Testing a Redux & React web application
    [转]于Fragment和Activity之间onCreateOptionsMenu的问题
    [转]探究java IO之FileInputStream类
    深入解析FileInputStream和FileOutputStream
    [转]慎用InputStream的read()方法
    [转]Android
  • 原文地址:https://www.cnblogs.com/cdwodm/p/2730182.html
Copyright © 2011-2022 走看看