Window 上MS VS一統天下,從VC6,VS2005,VS2008,一直到VS2010. 很久以前以為C/C++開發環境就只有MS。 當轉到Linux 上面時,才發現大錯特錯。 IDE,大有選擇。 就記錄自己用到C/C++的IDE.
1. VIM/make/gdb/valgrind/profiler
開始之前不得不提一下,最淳樸的工具鏈。雖然開始時花的時間多,但是覺得是值得的。
Vim 編輯器的神之美稱,make/scons/cmake 的編譯工具,gdb/ddd 的調視工具。(ddd介面太土,而且不太穩定)
這組工具自己可以定製,發現時間越長,這個工具還是效率不低的。
關鍵明白後面的概念,後面的IDE都是對其整合,比如都整合gdb,但是肯定沒有gdb本身暴露的功能強大。
2. Code-lite
是見到的IDE的跟VS 最接近的,很直觀,拿來就可以用。速度快,文法高亮不錯。
3. CodeBlocks
也不錯,但直觀型沒有Code-lite。
4. QtCreator
可以,但是介面不直觀。速度慢。
5. ecllips-cdt
重量層級,但是剛開始給人的感覺很是不直觀。但是用起來剛開始導檔案建立索引時間大點,還是不錯的。
一本詳細教材: http://www.linuxtopia.org/online_books/eclipse_documentation/eclipse_c_c++_guide/
6. Kdevelop
Ubuntu 上不支援,需要手工下載,編譯花很長時間。 而且 那個安裝文檔沒有說清楚,需要安裝一個kdebase-workspace-dev。 折騰半天終於可以用。但是不穩定. 難道是因為是一個奇數版本?
QT 4.6.2
Kdevelopment Platform 4.4.5
Kdevelop 4.1.1
在StackOverflow上面有一個文章討論IDE,原來還有很多IDE,真是受教了。
http://stackoverflow.com/questions/24109/c-ide-for-linux
從調視的角度來看,這些IDE封裝一個調視器,就是gdb。
這些調試器都支援,從根據makefile的建立工程。換句話說也就是將已經有的傳統開發的項目,用makefile 維護的項目很容易的匯入到這些IDE中。根據也有的makeFile 去編譯檔案,調視的時候只需要調試器將debug版本的程式符號表和源檔案聯絡起來就可以。 這些要歸功與gcc的-g 選項。
1. debug 版本的程式儲存源檔案沒有?如果有,不需要源檔案就可以看代碼;如果沒有,怎麼指定原始碼和符號表串連起來?
實驗以下,將debug版的可執行檔,從一個機器拷貝到另外一個機器,不能執行並且提示缺少源檔案。可見debug版的可執行檔存有原始碼的路徑。 果然一搜到一篇文章介紹調試版的可執行程式是如果通過儲存符號表,原始碼的行號,並將符號表和原始碼行關聯起來。
2. 符號表都儲存哪些東西,可以和源檔案關聯起來?
可以用命令列查看symbol table 的內容。 “objdump -t worker | grep worker | nl | less”
nm
file
strip 刪除符號表
gdb 調試的時候可以查看符號表資訊: http://www.linuxtopia.org/online_books/redhat_linux_debugging_with_gdb/symbols.html
3. 各種的調試器所做的一項基本工作就是將源檔案和符號表關聯起來。
4.調視可以通過內部啟動,關聯外部(attach)正在啟動並執行程式。
所以只要用make 把代碼編譯成功,並帶上(-g)選項,可以就調試了。 最簡單的可以用gdb,gdbtui 調試,也可以藉助用上面的iDE工具調試。
基本上是建立一個基於makefile 的工程,使用者自訂編譯,就可以調試。(原始碼的路徑,符號表與原始碼之間的關係編譯的時候已經維護好了,一個好的IDE這些不需要再指定)
Reference:
http://www.linuxtopia.org/online_books/centos_linux_guides/centos_linux_developer_tools_guide/ch-basic-principles.html#S1-COMP-DEV-TOOLS
http://www.linuxtopia.org/online_books/index.html
http://web.mit.edu/gnu/doc/html/gdb_toc.html#SEC99[gdb]