Linux下的 Source Insight (转载)

1)Cscope

Using Cscope on large projects (example: the Linux kernel)

Cscope can be a particularly useful tool if you need to wade into a large code base. You can save yourself a lot of time by being able to do fast, targeted searches rather than randomly grepping through the source files by hand (especially since grep starts to take a while with a truly large code base). 
In this tutorial you'll learn how to set up Cscope with a large project. We'll use as our example the Linux kernel source code, but the basic steps are the same for any other large project, including C++ or Java projects.

Get the source. First get the source code. You can download the Linux kernel source from http://www.kernel.org. For the rest of this tutorial, I'll assume you've downloaded Linux 2.4.18 and installed it into /home/jru/linux-2.4.18. 
Note: Make sure you've got enough disk space: the kernel tarball alone is 30 MB, it expands into 150 MB of source code, and the Cscope database we'll generate will gobble up another 20-100+ MB (depending on how much of the kernel code you decide to include in the database). You can put the Cscope database on a different disk partition than the source code if you need to.


Figure out where you want to put your Cscope database files. I'll assume you'll use /home/jru/cscope as the directory to store your database and associated files.

Generate cscope.files with a list of files to be scanned. For some projects, you may want to include every C source file in the project's directories in your Cscope database. In that case you can skip this step, and just use 'cscope -R' in the project's top-level directory to build your Cscope database. But if there's some code that you wish to exclude, and/or your project contains C++ or Java source code (by default Cscope only parses files with the .c, .h, .y, or .l extensions), you'll need to generate a file called cscope.files, which should contain the name of all files that you wish to have Cscope scan (one file name per line). 
You'll probably want to use absolute paths (at least if you're planning to use the Cscope database within an editor), so that you can use the database from directories other than the one you create. The commands I show will first cd to root, so that find prints out absolute paths.

For many projects, your find command may be as as simple as

    cd /
find /my/project/dir -name '*.java' >/my/cscope/dir/cscope.files

For the Linux kernel, it's a little trickier, since we want to exclude all the code in the docs and scripts directories, plus all of the architecture and assembly code for all chips except for the beloved Intel x86 (which I'm guessing is the architecture you're interested in). Additionally, I'm excluding all kernel driver code in this example (they more than double the amount of code to be parsed, which bloats the Cscope database, and they contain many duplicate definitions, which often makes searching harder. If you are interested in the driver code, omit the relevant line below, or modify it to print out only the driver files you're interested in): 
LNX=/home/jru/linux-2.4.18
cd /         
find $LNX                                                                \
-path "$LNX/arch/*" ! -path "$LNX/arch/i386*" -prune -o               \
-path "$LNX/include/asm-*" ! -path "$LNX/include/asm-i386*" -prune -o \
-path "$LNX/tmp*" -prune -o                                           \
-path "$LNX/Documentation*" -prune -o                                 \
-path "$LNX/scripts*" -prune -o                                       \
-path "$LNX/drivers*" -prune -o                                       \
-name "*.[chxsS]" -print >/home/jru/cscope/cscope.files

While find commands can be a little tricky to write, for large projects they are much easier than editing a list of files manually, and you can also cut and paste a solution from someone else.

Generate the Cscope database. Now it's time to generate the Cscope database: 
cd /home/jru/cscope     # the directory with 'cscope.files'
cscope -b -q -k

The -b flag tells Cscope to just build the database, and not launch the Cscope GUI. The -q causes an additional, 'inverted index' file to be created, which makes searches run much faster for large databases. Finally, -k sets Cscope's 'kernel' mode--it will not look in /usr/include for any header files that are #included in your source files (this is mainly useful when you are using Cscope with operating system and/or C library source code, as we are here). 
On my 900 MHz Pentium III system (with a standard IDE disk), parsing this subset of the Linux source takes only 12 seconds, and results in 3 files (cscope.out, cscope.in.out, and cscope.po.out) that take up a total of 25 megabytes.


Using the database. If you like to use vim or emacs/xemacs, I recommend that you learn how to run Cscope within one of these editors, which will allow you to run searches easily within your editor. We have a tutorial for Vim, and emacs users will of course be clever enough to figure everything out from the helpful comments in the cscope/contrib/xcscope/ directory of the Cscope distribution. 
Otherwise, you can use the standalone Cscope curses-based GUI, which lets you run searches, then launch your favorite editor (i.e., whatever $EDITOR is set to in your environment, or 'vi' by default) to open on the exact line of the search result.

If you use the standalone Cscope browser, make sure to invoke it via

    cscope -d

This tells Cscope not to regenerate the database. Otherwise you'll have to wait while Cscope checks for modified files, which can take a while for large projects, even when no files have changed. If you accidentally run 'cscope', without any flags, you will also cause the database to be recreated from scratch without the fast index or kernel modes being used, so you'll probably need to rerun your original cscope command above to correctly recreate the database.

Regenerating the database when the source code changes. 
If there are new files in your project, rerun your 'find' command to update cscope.files if you're using it.

Then simply invoke cscope the same way (and in the same directory) as you did to generate the database initially (i.e., cscope -b -q -k).
如果懒得看就照红色的命令来做,呵呵,速度蛮快的。而且可以查询汇编码
在kde下面有个frontend可以用,界面巨像SourceInsight


2)问题提出:
在windows下有sourceinsight可以很方便地定位函数、变量、宏定义等,便于开发人员管理项目代码,提高开发效率,那么在Linux下如何进行类似的操作呢。
vim可以使用ctags制作的tags文件来浏览程序源文件,达到sourceinsight类似的功能。

使用方法:
1、生成tags文件
在目录树的根目录里,使用命令:ctags -R 或 ctags --recurse
如:ctags -R src/*,则会在当前目录下生成tags文件
2、编辑vim配置文件.vimrc
添加两行: 
set tags=tags;
set autochdir
注意第一个命令里的分号是必不可少的。这个命令让vim首先在当前目录里寻找tags文件,如果没有找到tags文件,或者没有找到对应的目标,就到父目 录中查找,一直向上递归。因为tags文件中记录的路径总是相对于tags文件所在的路径,所以要使用第二个设置项来改变vim的当前目录。

    当然你如果想直接使用绝对路径,这样也是可以的:
set tags=/home/xxx/myproject/tags

  3、vim文件时,用用ctrl-]来执行跳转,通过ctrl+t来跳转回来就可以了,很方便的。

3)
把emacs变成代码浏览器,类似sourceinsight,不用再在windows下看代码了 
所需软件:
cscope-15.5.tar.gz http://sourceforge.net/projects/cscope
ecb-2.32.tar.gz http://sourceforge.net/projects/ecb

但是对于一般安装的GNU emacs来说还需要三个额外的包支持即eieio, semantic, speedbar
http://sourceforge.net/projects/cedet
有这三个包的下载
我用的是
eieio-0.17.tar.gz
semantic-1.4.4.tar.gz
speedbar-0.14beta4.tar.gz

安装ecb和三个支持包:
#cd /usr/share/emacs/site-lisp
#tar zxfv ecb-2.32.tar.gz
#tar zxfv eieio-0.17.tar.gz
#tar zxfv semantic-1.4.4.tar.gz
#tar zxfv speedbar-0.14beta4.tar.gz
做四个连接
ln -s ecb-2.32 ecb
ln -s eieio-0.17 eieio
ln -s semantic-1.4.4 semantic
ln -s speedbar-0.14beta4 speedbar

然后修改
site-start.el文件
添加以下五行
(setq load-path (append load-path '("/usr/share/emacs/site-lisp/eieio")))
(setq load-path (append load-path '("/usr/share/emacs/site-lisp/semantic")))
(setq load-path (append load-path '("/usr/share/emacs/site-lisp/speedbar")))
(setq load-path (append load-path '("/usr/share/emacs/site-lisp/ecb")))
(require 'ecb)

重新启动一下emacs
M-x ecb-activate
看看出现了什么

cscope安装更为简单反正我就是
$tar zxfv cscope-15.5.tar.gz
$cd cscope-15.5
$./configure
$make
#make install
然后把contrib/xcscope/目录下的cscope-indexer复制到PATH目录比如/usr/local/bin
然后把xcscope.el复制到
/usr/share/emacs/site-lisp
修改/usr/share/emacs/site-lisp/site-start.el
添加
(require 'xcscope)
重新启动emacs 并且打开一个C文件看看有什么变化?
上述的两个软件的使用说明看看他们自带的文档,非常清楚


4)gvim+taglist+cscope
或者
emacs+cscope


5)
在 Linux 下用wine 运行 sourceinsight

为了在 Linux 下跑 SourceInsight, 特地 emerge 了一个 wine-0.98。 效果还不错,
一些方便的配置,收藏之。

EasyWine论坛 » 『 Wine讨论 』 » wine 里的字体设定方法 
deman

wine 里的字体设定方法

参考 http://moto.debian.org.tw/viewtopic.php?t=7164 wsun013

1.
修改/加入 ~/.wine/user.reg

[Software\\Wine\\WineBrowser]
"Browsers"="firefox"

[Software\\Wine\\X11 Driver]
"ClientSideAntiAliasWithRender"="N"


[Software\\Wine\\Fonts\\Replacements] 1123127854
@="AR PL ShanHeiSun Uni"
"Arial"="AR PL ShanHeiSun Uni"
"Fixedsys"="AR PL ShanHeiSun Uni"
"Microsoft Sans Serif"="AR PL ShanHeiSun Uni"
"MingLiU"="AR PL ShanHeiSun Uni"
"MS UI Gothic"="AR PL ShanHeiSun Uni"
"PMingLiU"="AR PL ShanHeiSun Uni"
"Simsun"="AR PL ShanHeiSun Uni"
"Songti"="AR PL ShanHeiSun Uni"
"System"="AR PL ShanHeiSun Uni"
"Tahoma"="AR PL ShanHeiSun Uni"
"Terminal"="AR PL ShanHeiSun Uni"



第一段为 wine 所使用的 web browser, 在 console 能用的script 皆
可以写入, eg. 在console 下我打 firefox 可以开启firefox, 那就在
里面填入 firefox; 同理, 填入opera 将会把url pass 到opera 这个 script/binary

第二段是wine 的defualt 有开antialias, 但小弟我不喜欢看糊的字
所以手动加入这一段

第三段是 Font 的替代, 因为win32的UI 大多为这几样


2.
修改/加入 ~/.wine/system.reg 
[System\\CurrentControlSet\\Hardware Profiles\\Current\\Software\\Fonts]
"LogPixels"=dword:00000082

这里是改变dialog window buttom的字体大小 


3.
修改/加入 ~/.wine/windows的dir/win.ini 
[Desktop]
menufontsize=13
messagefontsize=13
statusfontsize=13
IconTitleSize=13

这边是改变其他字体的大小 

6)
http://linux.chinaunix.net/bbs/thread-904179-1-1.html
用VIM+ctag+cscope代替SourceInsight的技巧与问题!!! 
7)引自:http://oldlinux.org/oldlinux/viewthread.php?tid=8849


推荐一个比sourceinsight还好的代码编辑器,运行在linux平台下


这就是slickedit,可以运行在windows平台,linux平台,solaris平台的代码编辑器
绝对比sourceinsight强大,这是一个名不见经传的经典编辑器,曾经荣获多项软件大奖
这是linux正式破解版的下载地址,别忘了下载破解文件。
http://www.onlinedown.net/soft/2727.htm
有了他就可以彻底脱离windows了。哈哈,这可是我找了半年才找到的下载地址阿。
slickedit的windows版本对于中文的支持堪称完美。但是linux版本不能输入中文(我还没有找到解决办法)
linux版本需要显示中文要做如下设置(很简单的)
1,可以修改tools>>options>>file options为simple chinese2312
2,tools>>options>>fonts 将字体改为MS sans serif就可以了;
Go,Go,Go! enjoy it

posted @ 2012-03-20 15:28  欢乐小飞  阅读(11693)  评论(0编辑  收藏  举报