今天偶然看到sohu的分类,在程序代码分类中有个“冷门语言”,点击一看,hoho,有perl,有python,真不知道sohu的程序员是孤陋寡闻还是怎么了?
作为参考,google是把perl和python单独作为分类的,点击
yahoo英文版也是单独作为分类,点击
中文yahoo中perl作为单独分类,点击
介绍了几种常见的源代码阅读工具,包括常见的sourceinsight。
BBS 泉韵心声站 -- 文章阅读 [讨论区: BBS]
[分类讨论区] [全部讨论区] [返回版面] [返回文摘区] [快速返回]
--------------------------------------------------------------------------------
发信人: tian.bbs@bbs.tju.edu.cn.no.spam ( 专 ), 信区: BBS
标 题: [转载] 阅读源代码的工具介绍
发信站: 天大求实BBS站 (Wed Jul 7 22:14:55 2004)
转信站: SDU!netnews.sdu.edu.cn!news2.happynet.org!TJUBBS
【 以下文字转载自 Linux 讨论区 】
【 原文由 xiaoq.bbs@bbs.cqupt.edu.cn 所发表 】
阅读象Linux代码这样的复杂程序令人望而生畏。
它象一个越滚越大的雪球,阅读某个部分经常要用到好几个其他的相关文件,
不久你将会忘记你原来在干什么。所以没有一个好的工具是不行的。
我接触过以下这样3个工具:
1,SourceInsight
这是一个Windows环境下的读代码的工具
安装与一般的软件没有什么区别
它的使用简单介绍如下:
先选择Project菜单下的new,新建一个工程,输入工程名,
接着要求你把欲读的源代码加入(可以整个目录加)后,该软件就分析你所加的源代码。
分析完后,就可以进行阅读了。
对于打开的阅读文件,如果想看某一变量的定义,
先把光标定位于该变量,然后点击工具条上的相应选项,该变量的定义就显示出来。
对于函数的定义与实现也可以同样操作。
就我个人的使用感觉,总体来讲,使用是很方便的,但是有一些定义会找不到,
不知道是我自己的原因(比如设置不对,或者源代码没有找全),还是软件本身能力有限。
2,SourceNavigator
RedHat出的一个Linux环境下的读码工具
感觉功能比SourceInsight强,但是速度很慢。
就安装来说,因为要给所有的文件建立索引,要花费很长的时间
我给Linux内核建立完整的一个工程,至少要2—3个小时
而且X的效率毕竟不如Windows,运行时的速度也比较慢。
3,LXR
LXR(Linux Cross Reference),是一个通用的超文本cross-reference工具。
详细介绍见下面这篇文章:
《阅读linux源代码的工具---lxr和glimpse简介》
---作者: sea_cloud - China Linux Forum中国Linux论坛首页技术论坛|
我们在阅读linux源代码时都有这样的体会:核心的组织相对松散,
在看一个文件时往往要牵涉到其他的头文件、源代码文件。如此来回
跳转寻找变量、常量、函数的定义十分不方便,这样折腾几次,便使
读代码的心情降到了低点。
lxr(linux cross reference)就是一个解决这个问题的工具:他对
你指定的源代码文件建立索引数据库,利用perl脚本CGI动态生成包含
源码的web页面,你可以用任何一种浏览器查阅。在此web页中,所有
的变量、常量、函数都以超连接的形式给出,十分方便查阅。比如你
在阅读/usr/src/linux/net/socket.c的源代码,发现函数
get_empty_inode不知道是如何以及在哪里定义的,这时候你只要点击
get_empty_inode,lxr将返回此函数的定义、实现以及各次引用是在什
么文件的哪一行,注意,这些信息也是超连接,点击将直接跳转到相应
的文件相应的行。另外lxr还提供标识符搜索、文件搜索,结合程序
glimpse还可以提供对所有的源码文件进行全文检索,甚至包括注释!
下面将结合实例介绍一下lxr和glimpse的基本安装和使用,由于
glimpse比较简单,就从它开始:
首先访问站点:http://glimpse.cs.arizona.edu/ 得到glimpse
的源码,比如我得到的是glimpse-4.12.5.tar.gz . 用root登录,在
任一目录下用tar zxvf glimpse-4.12.5.tar.gz解开压缩包,在当前
目录下出现新目录glimpse-4.12.5 .进入该目录,执行make即可。进
入bin目录,将文件glimpse和glimpseindex拷贝到/bin或/usr/bin下
即可。如果单独使用glimpse,那么只要简单的执行glimpseindex foo
即可,其中foo是你想要索引的目录,比如说是/usr/src/linux .glimpseindex
的执行结果是在你的起始目录下产生若干.glimpse*的索引文件。然后
你只要执行glimpse yourstring即可查找/usr/src/linux下所有包含
字符串yourstring的文件。
对于lxr,你可以访问lxr.linux.no得到它的源代码解包后,遵循如下步骤:
/*下面的文字来源于lxr的帮助文档以及本人的安装体会*/
1)修改Makefile中的变量PERLBIN和INSTALLPREFIX,使它们分别为
perl程序的位置和你想lxr安装的位置.在我的机器上,PERLBIN的值为
/usr/bin/perl .至于INSTALLPREFIX,有如下原则,lxr的安装路径
必须是web服务器能有权限访问。因此它的值简单一点可取
/home/httpd/html/lxr (对于Apache web server)。
2)执行 make install
3)修改$INSTALLPREFIX/http/lxr.conf :
baseurl : http://yourIP/lxr/http/
htmlhead: /home/httpd/html/lxr/http/template-head
htmltail: /home/httpd/html/lxr/http/template-tail
htmldir: /home/httpd/html/lxr/http/template-dir
sourceroot : /usr/src/linux # 假如对linux核心代码索引
dbdir : /home/httpd/html/lxr/dbdir/ #dbdirk可任意起名,且位置任意
glimpsebin: /usr/bin/glimpse #可执行程序glimpse的位置
4)在$INSTALLPREFIX/http/下增加一个文件.htaccess 内容:
SetHandler cgi-script
上面这个文件保证Apache server将几个perl文件作为cgi-script.
5)按照lxr.conf中的设置建立dbdir ,按照上例,建立目录
/home/httpd/html/lxr/dbdir
进入这个目录执行$INSTALLPREFIX/bin/genxref yourdir
其中yourdir是源码目录,比如/usr/src/linux
如果要结合glimpse,则执行glimpseindex -H . yourdir
6)修改 /etc/httpd/conf/access.conf ,加入
Options All
AllowOverride All
order allow,deny
allow from all
7)进入/etc/rc.d/init.d/ 执行
killall httpd
./httpd start
进入X ,用浏览器 http://yourIP/lxr/http/blurb.html
大功告成 ,这下你可以舒心的读源码了。 --
--
※ 来源:·幽幽黄桷兰 bbs.cqupt.edu.cn·[FROM: xiaoq.com]
--
※ 转载:.天大求实BBS bbs.tju.edu.cn.[FROM: 202.113.13.188]
--------------------------------------------------------------------------------
[分类讨论区] [全部讨论区] [返回版面] [返回文摘区] [快速返回]
从昨天下午开始发作以来,中刀的战友看来不少。参见这里。
我也看了一些网站的分析文章。应该说这次国内几大防病毒产品厂商的动作都比较快,都是当天就给出分析报告。其中瑞星的动作应该是最快的,他们在下午给出了查杀的工具。但是这个查杀的工具有缺陷!
我的情况有点特殊,我是手工删除了explorer.exe 和 rundll32.exe,手工修改了注册表键值,但是我没有注意到winlogon。我用该工具查杀以后,检查出iexplore.exe和userinit32.exe。然后我遇到两个问题:1.%windows%\system32\drivers\etc\hosts文件没有处理,这会造成被屏蔽的九百多个网站仍然指向那个网站。这个比较好修复,直接删除这些行就可以了。2.我重新启动系统,一登陆就退出,这个问题的原因是HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon未被修复,其中的“UserInit”被指向userinit32.exe,而该文件已经被该查杀工具清除!修复这个问题的办法主要有两个,1.如果你有另外一个版本的windows,立即到另外一个windows里,运行regedit,鼠标点击“HKEY_USERS”,点击“文件”菜单,选择“加载配置单元”(英文是load HIVE),然后定位到你受感染的windows目录的system32\config下面,选择software文件,系统提示输入“项名称”(Key),随便输入一个,然后打开Microsoft\Windows NT\CurrentVersion\Winlogon,修改“UserInit”为“你的windows目录\system32\userinit.exe,”注意最后有个“,”。2.如果你没有其他Windows,使用windows光盘进入控制台,然后在Dos下修改键值HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon,具体操作参见天极网的文章。
根据我的判断,瑞星的杀毒工具在这里偷了个懒,可能因为他发现我只有部分程序中毒,就没有检查注册表和hosts文件。