linux下的sourceinsight

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

發佈了4 篇原創文章 · 獲贊 6 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章