[daily] 如何用emacs+xcscope阅读内核源码
假设
首先我假设:
- 你已经学会了使用emacs。
- 同时也学会了使用cscope。
- 读过cscope官网上,关于emacs的使用指引。
它的指引就是请你去阅读xcscope.el的源码,当然这无可厚非,而且非常好。
因为源码里的注释写的非常的详细。
如果,你不满足以上假设。也可以继续读下去,或者看一下我的另两篇短文。他们可以帮助你更快的定位学习资源。
![daily] cscope
![efficiency] emacs入门
问题
然后基于前边的信息,你在初次使用的时候,很可能会遇到想我一些的问题,就是在kernel工程下无论如何也找不到symbol
即使cscope们生成的都是正确的。
原因和解决
那是因为你,缺少cscope.files文件。这个文件是xcscope所需要的。我不清楚为什么在别的工程并不需要,比如strongswan。
总之,你在emacs里,在进入了你所在的工程,并打开了c文件(emacs有一个宏在识别到c文件是在打开cscope minor模式),
执行以下函数:
cscope-index-files
这个时候,就可以生成cscope.files文件,并正常索引了。而且如果你没有cscope.out的时候,他还也会帮你同步生成。
换句话说,你根本无需在命令行里自己做索引,只用这个函数就好了。
扩展
但是kernel有一点特殊的,就是它不需要所以系统include目录。
而且,他很大,我们希望用-q参数加速。
所以,你其实可以提前在命令行里自己做index。就如同你以前用vim的时候一直干的那样。
cscope -b -R -k -q
总结
所以,回到我们的标题,用emacs + xcscope 读kernel代码时,如何做呢?
- 用cscope生成kernel的index。
- 在emacs里做cscope.files的文件。
雕虫小技,各位见笑。
[daily] 如何用emacs+xcscope阅读内核源码的更多相关文章
- Linux内核源码分析方法
一.内核源码之我见 Linux内核代码的庞大令不少人“望而生畏”,也正因为如此,使得人们对Linux的了解仅处于泛泛的层次.如果想透析Linux,深入操作系统的本质,阅读内核源码是最有效的途径.我们都 ...
- 【转】Linux内核源码分析方法
一.内核源码之我见 Linux内核代码的庞大令不少人“望而生畏”,也正因为如此,使得人们对Linux的了解仅处于泛泛的层次.如果想透析Linux,深入操作系统的本质,阅读内核源码是最有效的途径.我们都 ...
- Linux内核源码分析方法_转
Linux内核源码分析方法 转自:http://www.cnblogs.com/fanzhidongyzby/archive/2013/03/20/2970624.html 一.内核源码之我见 Lin ...
- 阅读 Linux 内核源码
阅读Linux Kernel Source Code 假如你在Linux系统下面阅读Linux内核源代码,那么需要准备一些工具. ①Linux的内核源码 内核源码的下载地址:Index of /pub ...
- ubuntu下linux内核源码阅读工具和调试方法总结
http://blog.chinaunix.net/uid-20940095-id-66148.html 一 linux内核源码阅读工具 windows下当然首选source insight, 但是l ...
- Linux内核源码阅读记录一之分析存储在不同段中的函数调用过程
在写驱动的过程中,对于入口函数与出口函数我们会用一句话来修饰他们:module_init与module_exit,那会什么经过修饰后,内核就能狗调用我们编写的入口函数与出口函数呢?下面就来分析内核调用 ...
- 如何阅读Java源码 阅读java的真实体会
刚才在论坛不经意间,看到有关源码阅读的帖子.回想自己前几年,阅读源码那种兴奋和成就感(1),不禁又有一种激动. 源码阅读,我觉得最核心有三点:技术基础+强烈的求知欲+耐心. 说到技术基础,我打个比 ...
- windows7使用Source insight上远程修改ubuntu共享内核源码
由于本人阅读喜欢使用source insight.前段时间接触了linux核代码,而这份代码只能放在ubuntu服务器上编译,刚开始的时候是在windows上修改,完了之后再copy到服务器上去编译, ...
- linux内核源码注解
轻松学习Linux操作系统内核源码的方法 针对好多Linux 爱好者对内核很有兴趣却无从下口,本文旨在介绍一种解读linux内核源码的入门方法,而不是解说linux复杂的内核机制:一.核心源程序的文件 ...
随机推荐
- POJ 3190
POJ3190 摊位预订.时间限制:1000MS内存限制:65536K.共提交材料:12959份接受:4 546名特别法官.描述. 哦,那些 ...
- 给Ubuntu系统清理垃圾
原文地址:https://blog.csdn.net/levon2018/article/details/81746613 1.清理下载的软件包 不过与你想象的可能有很大的不同,Ubuntu系统在运 ...
- 七.HTTP协议原理介绍
01. 当用户访问一个网站时,都发生了事情? ①. 利用DNS服务,将输入的域名解析为相应的IP地址 a --本地主机输入域名后,会查询本地缓存信息和本地hosts文件 如果有就进行解析,如果没有 ...
- 商品规格笛卡尔积PHP
<?php $color = array('red', 'green'); $size = array(39, 40, 41); $local = array('beijing', 'shang ...
- install mysql on centos7
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可.开发这个分支的原因之一是:甲骨文公司收购了 MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的 ...
- 别再用"while (!feof(file))"来逐行读取txt文件了!
起因 执行一个C/C++程序出现segment fault.它逐行读取文本文件,每一行是一个图片名字,然后读图.处理图像,etc. 发现最后一次读取的文件名不存在(空的). 正确的逐行读取txt文件 ...
- Android+openCV 动态人脸检测
动态人脸检测前提是需要打开摄像头. 网上看了很多教程,我知道的有两种方式打开摄像头: JavaCameraView mCameraView = new JavaCameraView(this, -1) ...
- Android+openCV 的坑
之前一直用IntelliJ IDEA 导入 opencv_android_sdk 的 java 包,在最后一步finish时,始终出错. 后来重新安装Android Studio 重复以上步骤,能顺利 ...
- 利用MySQL游标进行计算排名
SELECT a.id, a.nick_name, a.member_account, a.integral, () AS tRank #计算行号 FROM tzqc_raw_data AS a, ( ...
- ssl证书专题(3):创建CA和申请证书
请看: https://www.cnblogs.com/mingzhang/p/8949541.html