[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复杂的内核机制:一.核心源程序的文件 ...
随机推荐
- Python面试题目之Python函数默认参数陷阱
请看如下一段程序: def extend_list(v, li=[]): li.append(v) return li list1 = extend_list(10) list2 = extend_l ...
- springboot项目中如何在pom文件覆盖starter中默认指定的jar版本号
分两种情况: 1.项目继承自spring-boot-starter-parent 通过定义properties的方式改变starter中的默认版本 <!-- Inherit defaults ...
- workqueue --最清晰的讲解【转】
转自:https://www.cnblogs.com/zxc2man/p/6604290.html 带你入门: 1.INIT_WORK(struct work_struct *work, void ( ...
- org.hibernate.boot.MappingNotFoundException: Mapping (RESOURCE) not found :
可能原因: hibernate映射文件hibernate.cfg.xml中mapping中resource写错了文件名或者路径
- 微信小程序-制作简易豆瓣笔记
demo截图: 图书: 电影: 共工欲善其事,必先利其器: 小程序编辑器下载地址 : https://mp.weixin.qq.com/debug/wxadoc/dev/dev ...
- 【原创】Java基础之常用JVM工具
查看当前所有java进程 # jps 查看某个进程的堆内存占用情况 # jmap -heap $pid 查看某个进程的堆内存中对象分布情况 # jmap -histo $pid 将某个进程的堆内存导出 ...
- VMware虚拟机安装Linux后忘记root密码怎么办(三)
第一种方法如下: 1.Linux开机 按键盘e今日GRUB界面如下:(GRUB管理引导启动盘) 切换到原系统目录: chroot /sysroot/ 2.重新启动客户机 3.使用新密码登录成功! 第二 ...
- 十二.HTTPS网站安全访问实践
期中集群架构-第十二章-HTTPS安全证书访问连接实践配置========================================= 01:网络安全涉及的问题: ①. 网络安全问题-数据机密性 ...
- jsp 部署
部署一个Servlet 3.0应用程序是一件轻而易举的 事.通过Servlet注解类型,对于不太复杂的应用程序, 可以部署没有描述符的Servlet/JSP应用程序.尽管如 此,在需要更加精细配置的情 ...
- Allegro PCB Design GXL (legacy) 设置自动保存brd文件
Allegro PCB Design GXL (legacy) version 16.6-2015 菜单Setup > User Preferences... 在User Preferences ...