尊敬的程序员们,请问如何去分析一个软件的源代码呢?

为当前最终发行版之前的所有版本提供支持
回复
头像
ifoolb
帖子: 45
注册时间: 2013-02-06 21:17
系统: Fedora newest
送出感谢: 0
接收感谢: 0

尊敬的程序员们,请问如何去分析一个软件的源代码呢?

#1

帖子 ifoolb » 2013-02-28 22:07

我是编程初学者,由于想自己学写GUI,先前在此问过系统调用的问题。但是我觉得自己写的GUI实在难看,于是想模仿Uget这个软件,研究它的源代码,但是它是gtk+的,也就是c语言的,我拿着看到有一大堆文件,不知从何下手,请高手指点指点一般的分析方法,谢谢。
Like a fool,I'm foolish enough.
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙
送出感谢: 4 次
接收感谢: 256 次

Re: 尊敬的程序员们,请问如何去分析一个软件的源代码呢?

#2

帖子 eexpress » 2013-02-28 22:32

dpkg -L 看软件包,带了glade或者类似的xml文件没。那就是界面。

不清楚Uget是不是自己写代码画的界面。话说这软件还是libgtk2.0的。界面很好看?

直接安装glade,自己画吧。
● 鸣学
buzzerrookie
帖子: 116
注册时间: 2012-08-21 18:17
送出感谢: 0
接收感谢: 8 次

Re: 尊敬的程序员们,请问如何去分析一个软件的源代码呢?

#3

帖子 buzzerrookie » 2013-03-01 8:44

看软件的文档。
我是一个程序员。
头像
ifoolb
帖子: 45
注册时间: 2013-02-06 21:17
系统: Fedora newest
送出感谢: 0
接收感谢: 0

Re: 尊敬的程序员们,请问如何去分析一个软件的源代码呢?

#4

帖子 ifoolb » 2013-03-01 13:09

eexpress 写了:dpkg -L 看软件包,带了glade或者类似的xml文件没。那就是界面。

不清楚Uget是不是自己写代码画的界面。话说这软件还是libgtk2.0的。界面很好看?

直接安装glade,自己画吧。
当然,无论如何比我写的好看,他们直接提供了源代码,我看了里面类似于xml的文件,奇怪的是它竟然写了些关于windows下的配置,比如说编译器是VC什么,安装到哪个盘。其实我只是想请教一下看要读懂别人的代码有没有什么好的方法,借鉴一下程序员们们的经验。
Like a fool,I'm foolish enough.
头像
tracyone
帖子: 866
注册时间: 2010-11-19 14:25
系统: 乌班图
来自: onetracy.com
送出感谢: 17 次
接收感谢: 12 次
联系:

Re: 尊敬的程序员们,请问如何去分析一个软件的源代码呢?

#5

帖子 tracyone » 2013-03-01 17:03

难道你妹听说过source insight。。。这个是windows下著名的阅读源代码利器,自己去百度下其功能,
还有用vim吧加一些外部工具和插件就能阅读源代码了,另外emacs、st2等都可以
头像
zhw2101024
帖子: 1849
注册时间: 2009-03-28 16:10
系统: Arch debian win7
送出感谢: 9 次
接收感谢: 70 次
联系:

Re: 尊敬的程序员们,请问如何去分析一个软件的源代码呢?

#6

帖子 zhw2101024 » 2013-03-02 9:11

先google一下taglist,貌似现在被某个更强大的东东取代了,可以列出源文件和头文件之间的调用关系。剩下的只能祈祷源代码里有注释了,或者看看官方网站里有没有介绍软件结构的文档。记住一点,linux的很多软件都要调用其它库的,如果确定要找的代码属于软件本身,那么这些可以直接跳过
头像
sighforever
帖子: 234
注册时间: 2007-08-07 18:14
送出感谢: 4 次
接收感谢: 3 次

Re: 尊敬的程序员们,请问如何去分析一个软件的源代码呢?

#7

帖子 sighforever » 2013-03-02 13:42

现代软件基本上都不是从main函数开始直接编写的,而绝大多数(尤其是有UI的软件)都是使用某些框架来开始编写的。

你觉得看不懂就是不知道怎么使用这些框架,所有你需要先找找看这个软件用的什么框架,然后翻翻文档,看看这个框架一般是怎么用的,然后再看你要看的程序就会好很多了。
什么是历史?历史是魔术师箱子里那只变来变去的小白鸽;
什么是真相,真相只是观众最愿意看到的硬币的那一面。
回复

回到 “老旧版本支持”