單獨(dú)的Emacs軟件的話,雖然也有著除了編輯以外的各種各樣的功能,例如Mail,網(wǎng)頁瀏覽等等,但是,僅對于我個人我還是覺得他就是個文本編輯器,因為別的功能我不用,也用不上。而且這個編輯器使用時還非常的費(fèi)勁,覺不出他比微軟的記事本強(qiáng)在哪里。
但是,Emacs支持配置其工作環(huán)境,當(dāng)結(jié)合了一些插件后,他就發(fā)揮出強(qiáng)大的功能了。
這個強(qiáng)大的功能 = SourceInsight+專用仿真Debug軟件之和。
還有就是,他是免費(fèi)的,F(xiàn)reeDownload的,可自定義的。
微軟在努力讓我們告別鍵盤,Linux則建議大家沒事別老碰鼠標(biāo)。
Emacs + gtags + cedet + ecb + doxymas + session + GDB
Emacs:GNU Emacs
gtags:GNU GLOBAL source code tag system
cedet:Collection of Emacs Development Environment Tools
ecb:Emacs Code Browser
doxymacs:Doxygen + Emacs
Doxygen:Source code documentation generator tool
session:Session Management for Emacs
GDB:GNU Project debugger
個人環(huán)境:VMware7.0.0 + (Fedora7+Ubuntu9.10)
Fedora7:現(xiàn)在fedora的最高發(fā)行版是Fedora12,所以用7的話,如果yum在線安裝,包的版本可能較低。
Ubuntu9.10:現(xiàn)在的最新版,apt在線安裝的話,包版本較新。
較新不是最新,想最新的話,去各自官網(wǎng)現(xiàn)在src安裝吧。
目標(biāo)源代碼:C語言
如果沒有現(xiàn)成的代碼就下個kernel或gcc或glib的源代碼吧。
但是建議寫個hello來試運(yùn)行,因為前者的源代碼都太大了,gtags建立tags或htags創(chuàng)建HTML模式源代碼和doxygen生成文檔等的時候,花費(fèi)時間極長。
同時也寫好hello的configure.ac和Makefile.am吧,能夠編譯后執(zhí)行,以便體驗功能。
Emacs:GNU Emacs (Ver:23.1)
Emacs:Editor MACroS(宏編輯器)
HomePage:http://www./software/emacs/
功能和熱鍵的學(xué)習(xí):
- http://man./soft/emacsuserguide/index.html
- http://www./software/chinese/manual/TUTORIAL.cn
- 《學(xué)習(xí)GNU Emacs》(68元)/《GNU Emacs Lisp 編程入門》(38元)
網(wǎng)上有中文掃描版和英文版的下載,忘了在哪里下的了,搜搜吧。
掃描版不清晰,例代碼根本看不清,建議購入原書。 - http://man./newsoft/Emac/book.html
下載安裝:參考上記Homepage。
http://ftp./gnu/emacs/
重點(diǎn):
記住個別編輯工作中常用Hotkey。
知道.emacs文件和<load-path>設(shè)置的作用和用法。
知道LISP語言。(但是不一定要掌握這種語言,抄抄網(wǎng)絡(luò)上大俠的就行,同時也希望更多的人加入到Lisp行列中)
簡單說明:
- .emacs文件:是Emacs啟動時,自動讀取用戶自定義配置的默認(rèn)的配置文件
(手動創(chuàng)建該文件,自定義配置都寫在該文件中,LISP語言,"/home/yourname/"路徑下) - shell命令啟動Emacs時,如果用'emacs -q'命令,則不加載任何額外的自定義設(shè)置啟動Emacs.
- <load-path>:由'.emacs'文件中編寫的相應(yīng)的自定義配置,調(diào)用的關(guān)聯(lián)**.el文件的存放路徑。
(在.emacs中記入該路徑時,建議使用絕對路徑.這樣通過shell命令無論用哪個帳戶的ENV啟動Emacs時,都能正確讀取對應(yīng)的**.el文件。也就是無視'~'所代替的ENV中的$HOME的值是什么,LISP語言)
這個<load-path>的文件夾,可以手動創(chuàng)建(推薦),也可以用Emacs軟件的默認(rèn)路徑(/usr/local/share/emacs/site-lisp/)。 - 下記的.emacsLoadpath 就是手動創(chuàng)建的一個文件夾,其中放置一些,準(zhǔn)備使用的el文件啦,cedet啦,ecb啦,gtags.el啦等等。
| 例: ;load-path (add-to-list 'load-path "/home/yourname/.emacsLoadpath") |
個人.emacs文件中的內(nèi)容:
(僅安裝emacs軟件后,即可完成的動作,無需安裝其他的組件,但需要個別插件,都是參考其他大俠的)
| ;load-path (add-to-list 'load-path "/home/yourname/.emacsLoadpath") (custom-set-variables ;; custom-set-variables was added by Custom. ;; If you edit it by hand, you could mess it up, so be careful. ;; Your init file should contain only one such instance. ;; If there is more than one, they won't work right. '(column-number-mode t);默認(rèn)顯示行號的同時,也顯示列號 '(display-time-mode t);顯示當(dāng)前時間 '(inhibit-startup-screen t);關(guān)閉啟動畫面 '(show-paren-mode t);顯示與當(dāng)前光標(biāo)所在位置的括號匹配的另一個括號 ) (setq visible-bell t);關(guān)閉出錯時的蜂鳴提示聲 (mouse-avoidance-mode'animate);當(dāng)鼠標(biāo)箭頭與光標(biāo)相近時,使鼠標(biāo)箭頭自動移開 ;(blink-cursor-mode nil);光標(biāo)不閃爍 (setq-default cursor-type 'bar);光標(biāo)顯示為一豎線 (tool-bar-mode -1);; 不顯示emcas的工具欄 (menu-bar-mode -1);; 不顯示emcas的菜單欄,按ctrl+鼠標(biāo)右鍵仍能調(diào)出該菜單 (setq x-select-enable-clipboard t);; 支持emacs和外部程序之間進(jìn)行粘貼 (fset 'yes-or-no-p 'y-or-n-p);以 'y/n'字樣代替原默認(rèn)的'yes/no'字樣 (setq frame-title-format "%b@emacs");在最上方的標(biāo)題欄顯示當(dāng)前buffer的名字 (setq make-backup-files nil);關(guān)閉自動備份功能 (setq auto-save-mode nil);關(guān)閉自動保存模式 (setq auto-save-default nil);不生成名為#filename# 的臨時文件 (setq require-final-newline t);; 自動的在當(dāng)前的buffer文件的最后加一個空行 (global-set-key "\r" 'align-newline-and-indent);;自動縮進(jìn)<C-j>變?yōu)?lt;Enter> (setq echo-keystrokes 0.1);; 盡快顯示按鍵序列提示 (global-font-lock-mode t);; 語法高亮 ;; 用來顯示當(dāng)前光標(biāo)在哪個函數(shù) ;(require 'which-func) (which-func-mode 1) (setq which-func-unknown "unknown") ;; 用M-x執(zhí)行某個命令的時候,在輸入的同時給出可選的命令名提示 (icomplete-mode 1) (define-key minibuffer-local-completion-map (kbd "SPC") 'minibuffer-complete-word) (global-hl-line-mode 1);;高亮當(dāng)前行 ;;;;;;;;;;;;;;;;;啟動時最大化;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (require 'maxframe) (add-hook 'window-setup-hook 'maximize-frame t) ;下載maxframe.el并放置在<load-path>中 ;http:///2007/02/22/maximize-on-startup-part-2/ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;web方式顯示行號;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;(set-scroll-bar-mode 'right);滾動條在右側(cè) (set-scroll-bar-mode nil) ; 不顯示滾動條, even in x-window system (recommended) (require 'wb-line-number) (wb-line-number-toggle) ;下載wb-line-number.el并放置在<load-path>中 ;http://homepage1./blankspace/emacs/elisp.html ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;cc-mode;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (add-to-list 'load-path "/home/lb/.emacsLoadpath/cc-mode-5.31.3") (require 'cc-mode) (c-set-offset 'inline-open 0) (c-set-offset 'friend '-) (c-set-offset 'substatement-open 0) ;http://cc-mode./ ;http://www./html/linuxwangluojishu/linuxxitongguanliyuan/200902/28-3728.html ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (set-face-background 'default "gainsboro");背景設(shè)定 ;顏色參考value:X界面菜單欄中[edit]->[text properties]->[Display colors] ;未完其他內(nèi)容在本文的后續(xù)部分介紹 ;session ;global(GNU GLOBAL source code tag system) ;##cedet(Collection of Emacs Development Environment Tools) ;##ecb(Emacs Code Browser) ;##doxymacs ;##compile ;##GDB |

gtags:GNU GLOBAL source code tag system (Ver:5.7.7)
HP:http://www./software/global/
看看Tutorial(指導(dǎo))中的Overview就知道,通過gtags能夠建立軟件工程項目。
這就說明,Emacs+gtags的組合,就可以是能夠創(chuàng)建工程項目的編輯軟件了。
(基本等于sourceinsight,如果在加上cedet和ecb就更完美了)
還有很多人不用gtags而用的是cscope,我個人沒用過cscope,大家可嘗試使用。
支持的基本環(huán)境
- Shell command line
- Bash shell
- Vi editor (Nvi, Elvis, vim)
- Less viewer
- Emacs editor (Emacs, Mule, Xemacs)
- Web browser
- Doxygen documentation system
基本用法:
①下載安裝gtags后,在源文件的目錄中,鍵入"gtags -v"命令,就會生成相應(yīng)文件。
[xx@localhost sys]$ gtags -v
例:source code(/usr/src/sys) 123MB
GPATH 1MB `GPATH' path name database
GTAGS 26MB `GTAGS' definition database
GRTAGS 22MB `GRTAGS' reference database
GSYMS 23MB `GSYMS' symbol database
-------------------------------------
total of tag files 72MB
gtags的其他options的含義,請參考man手冊。
(輔助:http://blog./u3/98822/showart_2129660.html)
②下載安裝gtags后,會有名為gtags.el的文件,注意看安裝時make install的list,即可找到gtags.el的安裝位置(默認(rèn)目錄是:/usr/local/share/gtags/)。
將gtags.el的路徑設(shè)置為Emacs的<load-path>。
例:在`$HOME/.emacs'文件中加入下記代碼例。
|
(setq load-path (cons "/home/owner/global" load-path));gtags.el load-path (autoload 'gtags-mode "gtags" "" t);gtags-mode is true |
從此啟動Emacs后,及在<load-path>中l(wèi)oad了gtags.el文件,并將gtags-mode設(shè)置為真(等同于每次啟動后,都在Emacs中的M-x,手動鍵入gtags-mode)。
個人.emacs文件中的內(nèi)容:
| ;##global(GNU GLOBAL source code tag system);;;;;;;;;;;;;;;;;;;;; ;to use global from Emacs, you need to load the `gtags.el' and execute gtags-mode function in it. ;you need to add it to load-path. for `gtags.el'file. ;(add-to-list 'load-path "<path to gtags.el>");已經(jīng)在之前的代碼中l(wèi)oad完了 (autoload 'gtags-mode "gtags" "" t);;start Emacs and execute gtags-mode function. (setq c-mode-hook '(lambda () (gtags-mode 1)));get into gtags-mode whenever you get into c-mode ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
③當(dāng)源程序的源文件的內(nèi)容變化了(導(dǎo)致行號變化),或追加刪除了源文件等等。只要有改變,就要更新gtags生成的那4個文件。
例:source code(/usr/src/sys)
[xx@localhost sys]$ gtags -vi
or
[xx@localhost sys]$ global -u (推薦)
詳細(xì)用法:
直接參考gtags的英文的Tutorial(指導(dǎo))。
有很多章節(jié)可以跳過,因為那是global在別的編輯軟件中的應(yīng)用方法的說明。(例如shell,vi等)
章節(jié)還是要必看的。
看了gtags的英文的Tutorial(指導(dǎo))后,發(fā)現(xiàn)htags也蠻有用的。
$ htags -Ff -sanohIvt 'Welcome to XXX source tour!' --table-flist=1
$
注:gtags-parser和gtags-cscope沒搞明白,哪位大俠能幫幫忙解說一下,或發(fā)個說明鏈接什么的。
gtags會調(diào)用gtags-parser和gtags-cscope對目標(biāo)代碼,進(jìn)些分析,目的為生成源碼的tags。?
gtags完成的基本動作(具備鍵盤的快捷鍵):
- 鼠標(biāo)滾輪鍵(下按):根據(jù)上下文,找到"函數(shù)或常量或變量"的"定義或調(diào)用"的位置。
或,按【enter】。 - 鼠標(biāo)右鍵:返回。(就是按完滾輪鍵后,想返回到原來剛才的位置的話,就按右鍵)
鼠標(biāo)右鍵(返回),我想應(yīng)該是emacs的功能,而不是Global的功能。
如果鍵盤操作的話,應(yīng)該是:
①調(diào)用處搜索關(guān)鍵字→ 結(jié)果列表→ [Enter]鍵選擇→ 被選部分的代碼表示
②被選部分處,再次搜索相同關(guān)鍵字→ 結(jié)果列表→ [Enter]鍵選擇→ 原調(diào)用處的代碼再表示 - 光標(biāo)+Enter:當(dāng)按滾輪鍵后,出現(xiàn)的調(diào)用位置的結(jié)果為多個時,將光標(biāo)調(diào)整到相應(yīng)行,按下回車即可跳轉(zhuǎn)到對應(yīng)位置。
(如圖,名為_exit_ts的函數(shù)在整個項目中,有多個位置調(diào)用他)

CEDET:Collection of Emacs Development Environment Tools Ver:1.0pre6
HP:http://cedet./
安裝:http://cedet./setup.shtml (切記看看下載后的INSTALL文件,需要make編譯)
沒有CEDET的話,后續(xù)的ecb不能安裝使用。
這個組件,安裝簡單,使用便利。(望大家閱讀文檔,了解他的各種功能)
我個人常用的兩個功能是,speedbar和smart code completion(自動補(bǔ)全)
個人.emacs文件中的內(nèi)容:
| ;##cedet(Collection of Emacs Development Environment Tools);;;;;; (load-file "/home/yourname/.emacsLoadpath/cedet/common/cedet.el") ;讀取子目錄中的特別的 .el 文件 (global-ede-mode 1); Enable the Project management system (semantic-load-enable-code-helpers); Enable prototype help and smart completion (global-srecode-minor-mode 1); Enable template insertion menu (global-set-key [(f4)] 'speedbar-get-focus);speedbar快捷鍵[F4] (define-key c-mode-base-map [(control tab)] 'semantic-ia-complete-symbol-menu);自動補(bǔ)全Ctrl+tab ;(control tab)(meta ?/) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
speedbar插圖:
smart code completion(自動補(bǔ)全)插圖:
就是當(dāng)輸入一個已有的函數(shù)名或變量常量名的時候,輸?shù)揭话霑r按快捷鍵自動補(bǔ)全剩余的字母。
我自定義的該功能的快捷鍵是<Ctrl> + <Tab>,也有設(shè)成<Meta> + / 的,根據(jù)個人習(xí)慣,自行定義。
來自官網(wǎng)的插圖:
注:當(dāng)前發(fā)布的最新版的CEDET Ver:1.0pre6,在使用的時候發(fā)現(xiàn)了一個問題。
就是在執(zhí)行自動補(bǔ)全功能,索引tags時,到LL/confname.h的10%時,Linux系統(tǒng)會down機(jī)。
這個不幸的事情在我的電腦上發(fā)生了。
解決方法(轉(zhuǎn)載):http://hi.baidu.com/susdisk/blog/item/dceeded0278c7d85a1ec9c01.html
----轉(zhuǎn)載------
使用cedet1.0pre6時一直有這個問題,一旦看一個新工程時,semantic進(jìn)行索引tags,到LL/confname.h的10%時就會down掉,沒有響應(yīng)。在mail-list里面已經(jīng)有討論(http://www./showthread.php?t=101444),解決方案也很簡單,不用1.0pre6,使用cvs版本,如果還使用了ecb,則在重新?lián)Qcvs版本后還要重編譯ecb,否則emacs是load error的。cedet的cvs版本獲取地址:
(shell命令)
cvs -z3 -d:pserver:anonymous@cedet.cvs.:/cvsroot/cedet co -P cedet
現(xiàn)在好了,emacs不會在看一個新工程時就掛掉了,而且聽說cvs版本的補(bǔ)全功能更完備一些。
------------
ECB:Emacs Code Browser Ver:ecb-2.40
HP:http://ecb./
安裝:http://ecb./docs/Installation.html#Installation
其中Requirements內(nèi)容中的1和2還是必要的,3和4對于我來說用不上(我的環(huán)境非XEmacs,目標(biāo)代碼也不是Java)
輔助:
http://blog.csdn.net/intrepyd/archive/2009/07/09/4333893.aspx
- 其中在上記"輔助"的blog中設(shè)置[鼠標(biāo)支持]的時候,fedora使用'鼠標(biāo)滾輪下按'的方式選擇和設(shè)置。
- 關(guān)閉ecb的"每日提醒"和info和upgrandoption界面,請參考下記.emacs文件中的代碼。
疑問:ecb中的Methods窗口為什么有的時候是空的,什么都沒有?
有的時候能夠正確表示當(dāng)前源文件中定義的函數(shù)/類型/成員列表呢?
難道是當(dāng)前的文件定義的數(shù)量太多?
貌視保存一下當(dāng)前文件,就能正確表示了。(待反復(fù)確認(rèn))
個人.emacs文件中的內(nèi)容:
| ;##ecb(Emacs Code Browser);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (add-to-list 'load-path "/home/lb/.emacsLoadpath/ecb") (load-file "/home/lb/.emacsLoadpath/ecb/ecb.el") (require 'ecb) (require 'ecb-autoloads) ;(setq ecb-auto-activate t);自動啟動ecb (setq ecb-auto-activate t;自動啟動ecb ecb-tip-of-the-day nil;不顯示每日提醒 inhibit-startup-message t;不知道什么意思,望各位指導(dǎo) ecb-auto-compatibility-check nil; ecb-version-check nil; ) (global-set-key [f8] 'ecb-activate) ;;定義F8鍵為激活ecb (global-set-key [f7] 'ecb-deactivate) ;;定義F7為停止ecb ;;;; 各窗口間切換 (global-set-key [M-left] 'windmove-left) (global-set-key [M-right] 'windmove-right) (global-set-key [M-up] 'windmove-up) (global-set-key [M-down] 'windmove-down) ;;;; 使某一ecb窗口最大化 (define-key global-map "\C-c1" 'ecb-maximize-window-directories) (define-key global-map "\C-c2" 'ecb-maximize-window-sources) (define-key global-map "\C-c3" 'ecb-maximize-window-methods) (define-key global-map "\C-c4" 'ecb-maximize-window-history) ;;;; 恢復(fù)原始窗口布局 (define-key global-map "\C-c`" 'ecb-restore-default-window-sizes) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
ecb界面插圖:
ecb的Method窗口最大化:
官網(wǎng)的各種插圖:
http://ecb./screenshots/index.html
※※※※※ 去試試上記內(nèi)容吧!如果不行,往下進(jìn)行還是沒啥意思。 ※※※※※
doxymacs:Doxygen + {X}Emacs Ver:1.8.0
文檔文檔文檔,文檔是寫給誰的?寫給別人看的?寫給領(lǐng)導(dǎo)看的?
我覺得文檔是寫給你自己的,為了備忘、整理思路和確認(rèn)檢查。(例如本貼,望大家都來留下一筆吧)
但是寫文檔,好像挺費(fèi)勁呀。尤其是coding完成/功能實現(xiàn)之后,就更不愿意回過頭來寫已經(jīng)完成的功能的設(shè)計文檔了。
其實設(shè)計文檔都應(yīng)該在實際coding之前完成,而不是,之后補(bǔ)寫。
那么,就用Doxygen根據(jù)代碼來生成文檔吧。不過生成的文檔,只能當(dāng)做該模塊的外部規(guī)格文檔。詳細(xì)設(shè)計文檔可以在此基礎(chǔ)上修改做成。使得文檔的做成變得簡單方便了。
那Doxymacs和Doxygen是什么關(guān)系呢?
Doxygen是根據(jù)code生成文檔的工具。
主要是根據(jù)code中的注釋內(nèi)容生成文檔,這個注釋是要按照Doxygen工具中約定的寫法格式才能夠正確的生成文檔。
他可以使你養(yǎng)成寫注釋的習(xí)慣,寫好注釋的習(xí)慣。
同時你做成的代碼,后期可維護(hù)能力也大幅提高。
如果你看到幾千行的code一行注釋都沒有,會不會有種想吐的感覺呢?
Doxymacs則是結(jié)合在Emacs中的插件。
通過快捷鍵,自動完成符合Doxygen中要求的注釋格式。
當(dāng)然注釋的具體內(nèi)容是要由設(shè)計者自行添加的。
Doxymacs HP: http://doxymacs./
輔助:http://blog./u3/98822/showart_2137605.html
個人.emacs文件中的內(nèi)容:
| ;##doxymacs;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (add-to-list 'load-path "/home/lb/share/emacs/site-lisp/");讀取安裝el的路徑 (require 'doxymacs) ;; 啟動doxymacs ;;注釋高亮,針對C和C++程序 (defun my-doxymacs-font-lock-hook () (if (or (eq major-mode 'c-mode) (eq major-mode 'c++-mode)) (doxymacs-font-lock))) (add-hook 'font-lock-mode-hook 'my-doxymacs-font-lock-hook) (doxymacs-mode);doxymacs-mode常true (global-set-key [(f6)] 'doxymacs-mode);doxymacs-mode快捷鍵[F6] ;(add-hook 'c-mode-common-hook 'doxymacs-mode) ;; 啟動doxymacs-mode ;(add-hook 'c++-mode-common-hook 'doxymacs-mode) ;; 啟動doxymacs-mode ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
Doxygen:Source code documentation generator tool Ver:1.6.2
HP:http://www./~dimitri/doxygen/index.html
安裝方法和使用方法,看看Manual吧。
輔助:
http:///2005September/2005-09-13/200335.html
http://blog.csdn.net/SigmaSys/
http://blog.csdn.net/nightelve/archive/2008/05/31/2498047.aspx
http://blog./u3/98822/showart_2136698.html
生成的文檔的格式類型:
HTML
LaTeX
RTF
XML
Man Page
Doxygen會根據(jù)生成的configuration文件中的設(shè)定,來生成對應(yīng)的文檔。
Doxywizard可以更方便的設(shè)置這個configuration設(shè)定文件(GUI化)。
要么就用text模式來自行設(shè)置configuration文件,這個文件有點(diǎn)像Makefile文件的感覺。
看完Getting started章節(jié)后,即可生成你的第一份文檔了。
不過詳細(xì)的內(nèi)容,還是請仔細(xì)閱讀Manual。
關(guān)于Doxywizard:
使用源代碼安裝,沒能安裝上。異常的messages忘了是什么就不貼出來了。
終于裝上了,http://blog./u3/98822/showart.php?id=2154045
但是,由于使用的是fedora系統(tǒng),所以通過yum找到了Doxywizard 1.5.5,并安裝成功。(其他Linux使用apt命令)
那么就將Doxywizard 1.5.5的貼圖發(fā)出來讓大家看看
(不知和doyxgen 1.6.2一起使用會有什么異常,也許是新的個別選項無法設(shè)置吧)
(建議大家源碼安裝和doyxgen 1.6.2匹配的Doxywizard)
哦,對了這個Doxywizard的啟動是通過shell命令方式啟動的,不是點(diǎn)擊圖標(biāo)的形式。
插一張,doxygen生成的method圖,以便大家參考,當(dāng)然還生成各個函數(shù)的獨(dú)立的圖等等
有時通過method圖,也能發(fā)現(xiàn)軟件潛在的風(fēng)險,如下圖main函數(shù)的紅色箭頭部分
對于軟件的分析,僅用上面的method類狀態(tài)遷移圖是不夠的,尤其是對別人的代碼進(jìn)行分析。
再生成流程圖吧。(autoflowchart or Crystal REVS)(非doxygen)
http://blog./u3/98822/showart_2145179.html
關(guān)于Fedora的yum:
yum是在線更新fedora的重要工具之一:Yellow dog Updater
yumex是yum命令的圖形化前端可選組件。(yum extender)
HP:http://www./blog/
安裝時,可使用shell命令:$ yum install yumex
網(wǎng)上相關(guān)說明很多。(yum命令的用法)
插圖:
session:Session Management for Emacs Ver:session-2.2a
HP:http://emacs-session./
下記轉(zhuǎn)載:
來自http://man./soft/emacszh/x373.html
----------------------
5.2 session
5.2.1 session簡介
session擴(kuò)展包可以使Emacs保存每次編輯的一些歷史記錄, 這樣, 在下次打開Emacs時就可以使用上下鍵在以前輸入的信息中選取, 十分方便實用.
5.2.2 session的使用
session的使用十分簡單, 只需要在~/.emacs中加入如下幾句就可 以了:
(add-to-list 'load-path "<path to session>")
(require 'session)
(add-hook 'after-init-hook 'session-initialize)
----------------------
來自http://www./pc/pccon.php?id=6063&nid=143960
----------------------
;;記錄所有操作
(require 'session)
(add-hook 'after-init-hook 'session-initialize)
;;記錄和恢復(fù)屏幕
(load "desktop")
(desktop-load-default)
(desktop-read)
;;desktop自動存盤模式,23需要加
(desktop-save-mode 1)
----------------------
在GNU Emacs的Manual中有詳細(xì)的說明。
找找吧。google下"Emacs session"就有。
注:在使用session的時候,每次啟動都有個提示信息,需要按'y'后,完成啟動。
---------
Please answer y or n. Warning: desktop file appears to be in use by PID ????.
Using it may cause conflicts. Use it anyway? (y or n) "
---------
參考了下記帖子后,解決。
(即去掉(desktop-read)項,我還真說不清這項是干什么用的,沒讀手冊和幫助呀)
https://bugs./ubuntu/+source/emacs-snapshot/+bug/163342
個人.emacs文件中的內(nèi)容:
|
;;;;;;;;;;;session;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;?????? |
GDB:The GNU Project Debugger Ver:7.0.1
HP:http://www./software/gdb/
GDB的使用方法就不多說了,網(wǎng)上找找吧。
這里僅介紹他的功能之一:gdb-many-windows
個人.emacs文件中的內(nèi)容:
| ;##GDB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (global-set-key [(f5)] 'gdb-many-windows);gdb-many-windows快捷鍵[F5] (setq gdb-use-separate-io-buffer t) ; 不需要"IO buffer"時,則設(shè)為nil ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
--------------
注:裝完GDB 7.0.1 后,GDB不能啟動。
錯誤提示是:
gdb: error while loading shared libraries: libiconv.so.2: cannot open shared object file: No such file or directory
解決方法是(網(wǎng)摘):
在/etc/bashrc 或 ~/.bashrc 或 ~/.bash_profile 等等,位置加入下記:
export LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH"
--------------
(是不是GDB安裝的路徑錯了呢!?)
GDB模式啟動后,下面的6個buffer將被顯示:
+----------------------------------------------------------------------+ |
各buffer的含義如下:
- GDB Toolbar - GDB 操作Toolbar
- GUD buffer - 執(zhí)行操作的buffer
- Locals buffer - 本地變量名和值的表示buffer
- Source buffer - 表示sourcecode的buffer
- IO/ buffer - 表示程序的輸入輸出的buffer
- Stack buffer - 運(yùn)行停止的時候,調(diào)用關(guān)系的表示buffer
- Breakpoints buffer - breakpoints斷點(diǎn)的表示buffer
buffer崩潰的時候、通過'M-x gdb-restore-windows'返回原狀態(tài)。
gdb-many-windows插圖
其他內(nèi)容:
1.compile
GNU Emacs中有個功能叫compile。
當(dāng)編輯完源代碼后,<M-x>中輸入compile,會跳轉(zhuǎn)執(zhí)行make -k。
我記得 -k 的意思是,在遇見錯誤的時候,不停止,繼續(xù)編譯。之后,會有發(fā)現(xiàn)錯誤的個數(shù)的表示。
通過快捷鍵可直接跳轉(zhuǎn)到每個錯誤的源代碼,方便修正錯誤。
看了《學(xué)習(xí)GNU Emacs》一書之后,就知道了。
個人.emacs文件中的內(nèi)容:
| ;##compile;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define-key c-mode-base-map [(f9)] 'compile);emacs的compile命令快捷鍵F9 (setq compile-command "make");默認(rèn)的make -k命令,變?yōu)閙ake命令 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
2.buffer切換
當(dāng)打開多個buffer的時候,相互之間切換,不要用'M-x o'了。
這種有序的切換方式,太慢了,影響工作效率。
請使用'shift + 光標(biāo)':就是shift + (↑ ↓ ← →)
.emacs文件中追加
|
;; move window (Shift + cursor) ;;;;;;;; |




