学习工具篇 - 还在为寻找合适的源码工具烦恼吗?
2012-07-02 20:25
363 查看
这篇博文和前面的篇文章是衔接的,也算是一点点补充吧.
在前文中说过关于阅读源码可以提高自己的修养~ 对于源码的阅读,无非就是选中一个自己认为适合自己的源码包,
然后去阅读和学习.这里就有一个问题了,你使用什么样子的工具阅读呢? 使用vi? 或者是win下的记事本?
虽然很多的源码都是模块化开发的,在阅读的时候选中一个小模块,然后慢慢琢磨就可以了.但是在源码阅读的过程中
总是需要查找的功能的,一般的文本编辑器只能实现在一个文件中的指定查找,功能有限.不过,你也可以使用IDE阅读
源码,方法很多,随自己喜欢吧.其实,我们还是有其他选择的.
解决的办法是什么呢? emacs/vim会给我们答案.
我已经不使用vim好久了,或者说更多的时间我选择使用emacs.个人感觉emacs慢慢有节奏的按键操作,可以让我体验coding
的快乐.那种感觉是vim不能给的,因为vim使用起来有点暴力~
取决于你的选择,我的建议是:emacs优雅,vim更注重效率.可随自己喜欢挑选一个.
emacs + cscope + xcscope 是源码阅读的不错选择.配置也相当的简单.
由于我使用的是ubuntu 12.04 所以配置工作也都是在此环境下面完成的,仅供参考.
xcscope是cscope插件的扩展:[link:http://www.emacswiki.org/emacs/xcscope+.el]]
怎么去结合emacs使用cscope阅读源码呢? 先看一下关于xcscope的一些操作说明( 当然,这些说明在emacs的菜单选项中也是有的~ )
下面就就结合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面前无力~
在前文中说过关于阅读源码可以提高自己的修养~ 对于源码的阅读,无非就是选中一个自己认为适合自己的源码包,
然后去阅读和学习.这里就有一个问题了,你使用什么样子的工具阅读呢? 使用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的菜单选项中也是有的~ )
C-c s s Find symbol. C-c s d Find global definition. C-c s g Find global definition (alternate binding). C-c s G Find global definition without prompting. C-c s c Find functions calling a function. C-c s C Find called functions (list functions called from a function). C-c s t Find text string. C-c s e Find egrep pattern. C-c s f Find a file. C-c s i Find files #including a file. search: C-c s b Display *cscope* buffer. C-c s B Auto display *cscope* buffer toggle. C-c s n Next symbol. C-c s N Next file. C-c s p Previous symbol. C-c s P Previous file. 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面前无力~
相关文章推荐
- 利用Matlab自带的深度学习工具进行车辆区域检测与车型识别【福利-内附源码与数据库】(一)
- 麻雀虽小,五脏俱全:分析CVS活动情况的小工具(有源码供学习)
- 麻雀虽小,五脏俱全:分析CVS活动情况的小工具(有源码供学习)
- 使用 AppFuse 的七个理由--学习 Java 开放源码工具 —— 并使用这些工具提高生产效率
- 还在为你的校内古惑仔兄弟少而感到烦恼吗?请下载这个小工具批量加上和你一起奋斗的兄弟吧。
- 利用Matlab自带的深度学习工具进行车辆区域检测与车型识别【福利-内附源码与数据库】(一)
- 还在为“我不断的在寻找,有你的世界在哪里!~~~”之类的广告而烦恼么?这坑爹的广告看了几百遍了,于是我在这里把我自己做的给大家看看!~~
- 查看源码的工具 学习jQuery源码不错的工具
- 机器学习之寻找合适的学习方法
- jQuery 1.6 源码学习(七)——core.js[7]之实用工具方法(Utilities)
- 查看源码的工具 学习jQuery源码不错的工具
- 麻雀虽小,五脏俱全:分析CVS活动情况的小工具(有源码供学习)
- Boost源码学习三[实用工具](1)
- Boost源码学习三[实用工具](3)
- jquery 源码学习(四)构造jQuery对象-工具函数
- Android内核源码学习:1、MacOS 编译Android源码-工具
- 学习Postgres 数据导入导出工具架构及源码
- jQuery源码学习5——工具方法之attr parents sibling clean
- 开放源码的.NET 反编译工具 .NET IL调试工具 学习微软中间语言(MSIL)的绝佳工具 Dotnet IL Editor 推荐