您的位置:首页 > 运维架构 > Linux

C++ IDE for Linux

2011-01-15 00:52 232 查看
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]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: