Linux源代码浏览、分析工具cscope相关介绍

  在Windows平台上做软件开发的同行都知道,有一款“简约而不简单”的源代码编辑、浏览、分析软件Source Insinght。这款软件的特色就不再这里做详细介绍了,套用一句经典广告词:“不用不知道,用了吓一跳”。无可厚非,这是一款"牛"系列的软件,无可厚非的另一点是:需要¥(不言自明……大家都懂的)。今天要介绍的cscope呢,是一款主要适用于Linux平台的软件,毋庸置疑的是这款软件是开源的,毋庸置疑的另一点是:不需要¥(无需多说……大家多支持开源软件)。它的功能和Source Insight相似,用于源代码的编辑、浏览、分析,是Linux程序员用做软件开发的“利器”。

  废话不多说,咱们进入正题,这里将介绍cscope相关的三款软件 :-) 

  cscope简介:cscope是一款基于字符界面的源代码浏览工具,尽管它最初是为C代码的搜索(包括lex、yacc文件)设计的,但是也可以用于对C++代码的搜索。用cscope你可以轻易地搜索到你的标识符是在哪里被定义和使用的,它可以轻而易举地解决以下问题:

  • 这个变量在哪里被使用?
  • 这个预处理符号的值是什么?
  • 这个函数都在哪些源代码文件中出现过?
  • 都有哪些函数调用了这个函数?
  • "out of space"的消息是从哪里来的?
  • 这个源文件在在目录结构中的位置?
  • 都有哪些源文件包含了这个头文件?
  cscope是由Santa Cruz Operation, Inc发布的,它遵循BSD开源协议。在使用的时候希望大家能够养成查看许可协议的习惯,这是开源软件所要求我们大家做的为数不多的事情之一。另外说一点,在编译安装使用开源软件的源码包时,请一定先查看其REAME、INSTALL、TODO、FAQ等文件。因为开源软件大多都是跨平台的软件,而且具有很强的定制性,根据不同的平台和环境,它所需要的依赖关系等往往都不一样,但是这些都是以上文件中会有详细说明。如果仔细查看上述文档,在编译安装的时候就会少走很多不必要的弯路,在编译安装时遇到问题及时查看这些文档也会很容易找到解决问题的方法(这些意见都是在数不清的安装摸索中总结出来的,其实已经有前辈告诫过了,我辈狂妄不羁,只有花了生命买了教训才体会到,真是汗颜)。
  min-cscope简介:min-cscope是"牛"系列cscope的强化版,它起源于贝尔实验室(Bell Labs)。(借此机会在这里表示对贝尔实验室的敬仰、崇拜之情!如果大家大概了解一下在这个实验室里诞生的种种技术、产品、理论等等,相信你会比我更加不能淡定)它的功能,甚至样子都和cscope基本一致,只是做了以下改进:
  • 增加基于CMake的Makefile生成系统
  • 内建了用于创建倒置索引的排序功能
  • curses可选化,从而使得min-cscope能够轻易地在不支持curses兼容库的平台(如:Windows)上编译安装
  Kscope简介:Kscope是scope的图形界面(KDE)版,需要Qt开发库的支持。
  总结:上面所介绍的三款软件,它们之间的关系是这样的,min-cscope和Kscope都是以cscope为基础的做的扩展,从其名称上可以看出,min-cscope是对cscope做络一些精简(编译系统)和扩展(排序),同时包含了cscope的所有功能,而Kscope就纯粹是给cscope做了件衣服,使得cscope不再“犹抱琵琶半遮面”,终于给“千呼万唤始出来”了。大家都知道字符界面(即终端操作)是需要很强的功力的,远不如图形界面易上手,那么Kscope的出现也就很自然了。笔者在下载这些软件时发现,它们已于2009年末停止维护络,至于为何,笔者不知,还望知情的朋友们细解!现在大家对这些软件之间的关系都基本清楚了,下面要做的就只剩安装了。在这里要说明的一点是:我从来不会去教一个使用Linux的人怎么去下载、编译、安装、使用软件,因为Linux系统包括其各种应用软件、系统软件,一般用户需要的系统上都有或者很容易就能获取,其他像开发者、管理员之类的使用者,这样做就有些多余了。一句话,如果你真的喜欢Linux,就去走近它、了解它、使用它,慢慢你就会发现你再也离不开它了。

 排雷区:对一些在文章中出现但不在文章主题范围内的技术名词、程序库、关键字的简单解释,深入了解需要自己动手

  1. lex: LEXical( ['leksikəl] adj.词汇的, 词典的)compiler的缩写形式,是Unix平台下非常著名的词法分析器生成工具。用它可以生成一个(自定义语言的)词法分析器的C源码,经过C编译器编译后就可以直接使用于编译器系统。相关知识在编译原理相关的书籍、文档中可以找到。
  2. Yacc:Yet Another Compiler Compiler的缩写形式,是Unix平台下非常著名的用于生成编译器的编译器。你可以用它和lex配合使用编写一款自己想怎么定义就怎么定义的语言(还是要遵循一定规则的),这款语言就可以用Yacc生成的编译器进行编译,然后可以在你的规则下正常运行。更多文档请自己动手,这里提供一个参考:IBM文档库
  3. curses:curses是一个在Linux/Unix下广泛应用的图形函数库,它的名字起源于"cursor optimization(即光标优化)“。 最早由美国伯克利大学的Bill Joy和Ken Arnold编写的, 用来处理一个游戏rogue的屏幕显示。后来贝尔实验室的Mark Horton在System III Unix中重新编写了curses。现在几乎所有的Unix,Linux操作系统都带了curses函数库,curses也加入了对鼠标的支持,一些菜单和面板的处理。可以说, curses是Linux终端图形编程的不二选择(比如著名的文字编辑器 vi 就是基于curses编的)。

 另附一个网友的安装教程:http://blog.chinaunix.net/uid-25885064-id-2747802.html

  再贴一张截图:

  

Linux源代码浏览、分析工具cscope相关介绍

原文链接: https://www.cnblogs.com/muxi/archive/2012/03/15/2397794.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    Linux源代码浏览、分析工具cscope相关介绍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/44343

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月8日 下午8:58
下一篇 2023年2月8日 下午8:59

相关推荐