学习工具篇 还在为寻找合适的源码工具烦恼吗?

 这篇博文和前面的篇文章是衔接的,也算是一点点补充吧.

在前文中说过关于阅读源码可以提高自己的修养~ 对于源码的阅读,无非就是选中一个自己认为适合自己的源码包,

然后去阅读和学习.这里就有一个问题了,你使用什么样子的工具阅读呢?  使用vi? 或者是win下的记事本?

 

虽然很多的源码都是模块化开发的,在阅读的时候选中一个小模块,然后慢慢琢磨就可以了.但是在源码阅读的过程中

总是需要查找的功能的,一般的文本编辑器只能实现在一个文件中的指定查找,功能有限.不过,你也可以使用IDE阅读

源码,方法很多,随自己喜欢吧.其实,我们还是有其他选择的.

 

解决的办法是什么呢? emacs/vim会给我们答案.

我已经不使用vim好久了,或者说更多的时间我选择使用emacs.个人感觉emacs慢慢有节奏的按键操作,可以让我体验coding

的快乐.那种感觉是vim不能给的,因为vim使用起来有点暴力~

取决于你的选择,我的建议是:emacs优雅,vim更注重效率.可随自己喜欢挑选一个.

 

emacs + cscope + xcscope 是源码阅读的不错选择.配置也相当的简单.

由于我使用的是ubuntu 12.04 所以配置工作也都是在此环境下面完成的,仅供参考.

sudo apt-get install cscope*

 xcscope是cscope插件的扩展:[link:http://www.emacswiki.org/emacs/xcscope+.el]]

 

怎么去结合emacs使用cscope阅读源码呢? 先看一下关于xcscope的一些操作说明( 当然,这些说明在emacs的菜单选项中也是有的~ )

 1 C-c s s         Find symbol.  
 2 C-c s d         Find global definition.  
 3 C-c s g         Find global definition (alternate binding).  
 4 C-c s G         Find global definition without prompting.  
 5 C-c s c         Find functions calling a function.  
 6 C-c s C         Find called functions (list functions called  
 7                 from a function).  
 8 C-c s t         Find text string.  
 9 C-c s e         Find egrep pattern.  
10 C-c s f         Find a file.  
11 C-c s i         Find files #including a file.  
12   
13 search:  
14 C-c s b         Display *cscope* buffer.  
15 C-c s B         Auto display *cscope* buffer toggle.  
16 C-c s n         Next symbol.  
17 C-c s N         Next file.  
18 C-c s p         Previous symbol.  
19 C-c s P         Previous file.  
20 C-c s u         Pop mark.

下面就就结合glib的源码说说如何使用emacs + xcscope+ cscope 组合的使用方法:

 

1. 随便打开源码包中的一个文件: 我打开的是glib/glib/gthread.h (我的glib源码包是使用git clone的,和官网下载的源码包目录有点不一样,请自己注意~)

 

2. 设定初始化目录,也就是cscope + xcscope插件生成tag的检测范围的限定.这可以根据你自己的需求去做,我的选择是把源码包设置为初始化目录. ( C-c s a)

 

3. 为文件生成检索tag. 一般我会选择执行两条命令(C-c s L and  C-c s i)

 

 有的时候,如果源码包很大个的话,执行的过程可能需要一些时间,不过还是很快的.

4. 执行完上面的步骤之后,就可以随意在源码包中查找关键词了.(C-c s s + key )

 如上图所示,会帮你查找到所有关键词出现的位置.这时候就是很据你自己的需求进行跳转.我想,对于辨别查找自己需要的源码这种能力,还是有的,不会在一大堆tag面前无力~

 

 
原文地址:https://www.cnblogs.com/respawn/p/2573662.html