linux下阅读源代码的工具

linux下阅读源代码的工具

Windows下的源码阅读工具Souce Insight 凭 借着其易用性和多种编程语言的支持,无疑是这个领域的“带头大哥”。

Linux/UNIX环境下, 主要的交叉索引工具有:ctags 、 cscope 、 global 、 lxr 、 KScope 、 sourcenav 、 calltree 、 CodeViz 、ncc 、gprof 等。

ctags

ctags应该是几个里面最古老的一个了,

Cscope

相比ctags的只能查找符号的定义,cscope则显得更加丰富,虽然他支持C语言,但是它除了能查找函数的定义,还能查找函数在哪里被调用过等,所以能在一定程度上弥补ctags的不足。

Global

Global是GNU出品的交叉索引工具,支持C, C++, Yacc, Java 和PHP4五种语言,命令行下表现不错,但是和vim配合使用,就不如前面两个更加亲切了。

LXR

Linux超文本交叉代码检索工具LXR(Linux Cross Reference),是由挪威奥斯陆大学数学系Arne Georg Gleditsch和Per Kristian Gjermshus编写的。这个工具实际上运行在Linux或者Unix平台下,通过对源代码中的所有符号建立索引,从而可以方便的检索任何一个符号,包 括函数、外部变量、文件名、宏定义等等。不仅仅是针对Linux源代码,对于C语言的其他大型的项目,都可以建立其lxr站点,以提供开发者查询代码,以 及后继开发者学习代码。   
目前的lxr是专门为Linux下面的Apache服务器设计的,通过运行perl脚本,检索源代码索引文件,将数据发送到网络客户端的Web浏览器上。 任何一种平台上的Web浏览器都可以访问,这就方便了习惯在Windows平台下工作的用户。 关于lxr的英文网站为http://lxr.linux.no/ ,在中国Linux论坛http://www.linuxforum.net 上有其镜象。
好的说完了。说说缺点,可能我分析得不深入,它的代码不是用C写的,是网页脚本,程序也很短,没有看到有应用数据库。很多的东西都是你浏览的时候才生成的,所以拿过来用或改造的潜力有限,而且代码分析的不够Global细腻。

KScope

KScope是cscope的图形前端,他为那些不熟悉vim或者是不习惯终端作业的人提供了图形界面的选择,界面是这一款软件的一个亮点,比 source insight还好看,从windows转过来做Linux开发的人可能感觉比较亲切。这也是我最近动心的原因。另外,它还有个比较迷人的特点:能生成函 数调用树。但说白了,其实是调用graphviz画出来的。

sourcenav
snavigator是一个不错的源代码编辑和项目管理软件。有Windows和Linux版本。

其它源码分析工具

除了上述的体系比较完整的工具外,还有很多源源分析的小工具。这些小工具多数是用来绘制函数调用关系图的。

几种免费的分析C/C++函数调用关系的工具。

函数调用关系图(call graph)是图(graph),而且是有向图,多半还是无环图(无圈图)——如果代码中没有直接或间接的递归的话。Graphviz 是专门绘制有向图和无向图的工具,所以很多call graph分析工具都以它为后端(back end)。那么前端呢?就看各家各显神通了。

调用图的分析分析大致可分为“静态”和“动态”两种,所谓静态分析是指在不运行待分析的程序的前提下进行分析,那么动态分析自然就是记录程序实际运行时的函数调用情况了。

静态分析又有两种方法,一是分析源码,二是分析编译后的目标文件。

**Doxygen 是源码文档化工具,也能绘制调用图,**它似乎是自己分析源码获得函数调用关系的。GNU cflow也是类似的工具,不过它似乎偏重分析流程图

reference: linux下阅读源代码的工具 https://blog.csdn.net/FirMoonLight/article/details/109522910

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xzjiang_365

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值