linux源代码阅读工具进阶
Windows下的源码阅读工具Souce Insight凭 借着其易用性和多种编程语言的支持,无疑是这个领域的“带头大哥”。Linux/UNIX环境下呢?似乎仍然是处于百花齐放,各有千秋的春秋战国时代,实 际上,似乎其环境下的任何软件都是处于一种逐鹿中原的态势,也许这就是“集市”之于“大教堂”的优势所在吧!主要的交叉索引工具有:ctags、cscope、global、lxr等。下面将就各软件的优劣作一简单介绍,但无意再次引起此类工具之争,萝卜白菜,你仍可选择你之所爱,所以本文仅供参考!:)
ctags
ctags应该是几个里面最古老的一个了,当然也是获得支持最多的一个,vim默认就支持ctags产生的tag数据库,不过原来的ctags名符其实, 只支持C语言,且分析不够细腻。其新版本名为exuberant ctags,但是它已经远远超出了它名字的范畴,支持包括C语言在内的33种编程语言,准确度上也不错,并且它的开发仍在如火如荼地进行着,前途无量啊!
配合vim使用,基本上能满足用户的要求。
常用命令:
建立数据库命令:
exuberant-ctags
在vim编辑器中浏览:
:ta x
跳转到符号x的定义处,如果有多个符号,直接跳转到第一处
:ts x
列出符号x的定义
:tj x
可以看做上面两个命令的合并,如果只找到一个符号定义,那么直接跳转到符号定义处,如果有多个,则让用户自行选择。
Ctrl+]
跳转到当前光标下符号的定义处,和ta类似。
Ctrl+t
跳转到上一个符号定义处,和上面的配合基本上就能自由跳转了。
另外两个:tn, :tp是在符号的多个定义之间跳转
美中不足,只能查找符号的定义!
Cscope
相比ctags的只能查找符号的定义,cscope则显得更加丰富,虽然他支持C语言,但是它除了能查找函数的定义,还能查找函数在哪里被调用过等,所以能在一定程度上弥补ctags的不足。
常用命令:
建立数据库的命令:
cscope
和vim配合使用:
不再重复vim文档了,自己通过命令
:help cscope
去详细学习吧。
比较遗憾的是,cscope的最后一次更新是在2003年,这个项目似乎也是被人抛弃了,希望以后能被人收养,或者和其它项目合并。
Global
Global是GNU出品的交叉索引工具,支持C, C++, Yacc, Java 和PHP4五种语言,命令行下表现不错,但是和vim配合使用,就不如前面两个更加亲切了。其特色在于分析得很细腻,还能生成交叉索引的web页,很适合用来做程序的文档。
LXR
Lxr是专门用来生成程序源码的交叉索引的web界面的工具,相比Global似乎更加专一
相关文档:
查看软件xxx安装内容
dpkg -L xxx
查找软件
apt-cache search 正则表达式
查找文件属于哪个包
dpkg -S filename apt-file search filename
查询软件xxx依赖哪些包
apt-cache depends xxx
查询 ......
上次在碰到这问题,在网上找了解决方法,可是没记下来。这星期要换机器,要把原来linux下的mysql数据库移到另一台服务器上。安装suse系统、再配置telnet、ftp服务、安装java JDK并配置、再安装eclipse和mysql,又花了一天的时间。感觉还是不熟练,配置防火墙老是不能将telnet和ftp服务排外。mysql又碰到了中文乱码问题,又在 ......
来源:cnbeta 作者:cnbeta 2008-10-31 出处:pcdog.com
我不知道为什么“只有0.10068%的Linux内核开发者领薪水”这种稀里糊涂的想法流传不息,但它确实在流传.所以,我只想一劳永逸地说,就绝大部分而言,Linux是由一些主要的美国公司雇用的软件工程师 ......
Linux内存线性地址空间大小为4GB,分为2个部分:用户空间部分(通常是3G)和内核空间部分(通常是1G)。在此我们主要关注内核地址空间部分。
内核通过内核页全局目录来管理所有的物理内存,由于线性地址前3G空间为用户使用,内核页全局目录前768项(刚好3G)除0、1两项外全部为0,后256项(1G)用来管理所有的物 ......