[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复杂的内核机制:一.核心源程序的文件 ...
随机推荐
- NB卡开卡注意事项【转】
转自:https://blog.csdn.net/cheng401733277/article/details/83276436 版权声明:本文为博主原创文章,未经博主允许不得转载. https:// ...
- Lua中的环境概念
[前言] Lua将其所有的全局变量保存在一个常规的table中,这个table称为“环境”.这种组织结构的优点在于,其一,不需要再为全局变量创造一种新的数据结构,因此简化了Lua的内部实现:另一个优点 ...
- 【原创】大数据基础之Spark(8)Spark中Join实现原理
spark中join有两种,一种是RDD的join,一种是sql中的join,分别来看: 1 RDD join org.apache.spark.rdd.PairRDDFunctions /** * ...
- JS高德地图计算两地之间的实际距离
这个是通过导航的方式来获取两地之间的实际距离,和消耗的时间(key值自己去申请哈) <!doctype html> <html> <head> <meta c ...
- 11、Grafana 5.0 新功能特性(译文)
Grafana v5.0的新功能 这是Grafana有史以来最重大的更新. 本文将详细介绍主要的新功能和增强功能. New Dashboard Layout Engine enables a mu ...
- 关于saltstack
配置Saltstack master 服务器 master服务器:saltstack.master 172.18.1.103 minion客户端:minion01 172. ...
- EF执行SQL返回动态类型
using System; using System.Data.Common; using System.Data.Entity.Core.Objects; using System.Data.Ent ...
- teamviewer连接未就绪的解决(Manjaro Linux)
放假回家,想设置一下teamviewer,结果一直报错"TeamViewer not ready. Please check your connection" 查了一通,发现这个方 ...
- 删除jar包
public class TestDelete { private static List<File> files = new ArrayList(); public static voi ...
- 【AtCoder】【DP】【思维】Prefix Median(AGC012)
模的是这位神犇的代码:Atcoder AGC012F : Prefix Median 题意: 在动态中位数那道题上做了一些改动.给你一个序列a,可以将a重新任意排序,然后对于a序列构造出b序列. 假设 ...