我想把我的编程视野扩展到Linux。一个好的、可靠的基本工具集很重要,还有什么比IDE更基本呢?

我可以找到这些SO主题:

轻量级IDE linux和 你使用什么工具来开发 Linux上的c++应用程序?

我并不是在寻找轻量级IDE。如果一个IDE值那么多钱,我就会为它付费,所以它不一定是免费的。

我的问题是:

Linux有什么好的c++编程IDE ?

最小值是相当标准的:语法高亮显示、代码完成(如智能感知或其Eclipse对应版本)和集成调试(例如basic 断点)。

我自己也搜索过,但是有太多了,几乎不可能手工区分好的和坏的,特别是对于像我这样在Linux中几乎没有c++编程经验的人来说。我知道Eclipse支持c++,而且我真的很喜欢Java的IDE,但是它对c++有什么好处吗?还有更好的吗?

第二篇文章实际上有一些很好的建议,但我遗漏的是,究竟是什么让建议的IDE对用户这么好,它的(缺点)优势是什么?

也许我的问题应该是:

根据您的经验,您建议使用哪种IDE,为什么?


当前回答

简短的回答是:选择您喜欢的任何“编辑器”,然后使用GDB控制台或简单的GDB前端来调试应用程序。调试器带有别致的ide,例如Netbeans对于C/ c++来说很糟糕。我使用Netbeans作为编辑器,Insight和GDB控制台作为调试器。

有了洞察力,您就有了一个漂亮的GUI和GDB的原始功能。

一旦您习惯了GDB命令,您就会开始爱上它,因为您可以做使用GUI永远无法做的事情。如果您使用的是GDB 7或更新版本,您甚至可以使用Python作为脚本语言。

这里的大多数人更关注ide的“编辑器”。然而,如果你正在用C/ c++开发一个大型项目,你可能会很容易地把70%以上的时间花在“调试器”上。高级ide的调试器至少落后于Visual Studio 10年。例如,Netbenas与Visual Studio有非常相似的接口。但是与Visual Studio相比,它的调试器有许多缺点。

Very slow to display even a array with only a few hundreds of elements No highlighting for changed value ( By default, visual studio shows changed values in the watch windows in red) Very limited ability to show memory. You cannot modify the source code then continue to run. If a bug takes a long time to hit, you would like to change the source and apply the changes live and continue to run your application. You cannot change the "next statement" to run. In Visual Studio, you can use "Set Next Statement" to change how your application runs. Although this feature could crash your application if not used properly, but it will save you a lot of time. For instance, if you found the state of your application is not correct, but you do not know what caused the problems, you might want to rerun a certain region of the your source codes without restarting your application. No built-in support for STL such as vector, list, deque and map etc. No watch points. You need to have this feature, when you need to stop your application right at the point a variable is changed. Intel based computers have hardware watch points so that the watch points will not slow down your system. It might takes many hours to find some hard-to-find bugs without using watch points. "Visual Studio" calls "watch pointer" as "Data BreakPoint".

这个清单可以长得多。

Netbeans或其他类似ide的缺点让我非常沮丧,所以我开始学习GDB本身。我发现GDB本身非常强大。广发银行并不具备上述所有的“缺点”。实际上,GDB非常强大,在许多方面甚至比Visual Studio还要好。我给你们看一个非常简单的例子。

例如,你有一个这样的数组:

struct IdAndValue
{
  int ID;
  int value;
};


IdAndValue IdAndValues[1000];

当应用程序停止时,您希望检查IdAndValues中的数据。例如,如果你想在数组中找到特定“ID”的序数和值,你可以创建一个像下面这样的脚本:

define PrintVal 
set $i=0
printf "ID = %d\n", $arg0
while $i<1000
  if IdAndValues[$i].ID == $arg0
    printf "ordinal = %d, value = %d\n", $i, IdAndValues[$i].vaue
    set $i++
  end
end
end

您可以在当前上下文中使用应用程序中的所有变量,包括您自己的变量(在本例中为$i)、传递的参数(在本例中为$arg0)以及所有GDB命令(内置或用户定义)。

使用GDB提示符中的PrintVal 1打印ID为“1”的值

顺便说一下,NetBeans确实附带了一个GDB控制台,但是通过使用控制台,您可能会使NetBeans崩溃。我相信这就是为什么控制台在NetBeans中默认是隐藏的

其他回答

我喜欢人们完全忽略了最初问题中对IDE的要求。Linux不是一个IDE。这不是那些词的意思。我用vi、gcc和make学习了c和c++,我不是说它们不是合适的工具,但它们不是IDE。即使您使用更复杂的工具,如vim或emacs或任何您想要的高级编辑器,在命令行上输入命令也不是IDE。

你们都知道make是visual studio的一部分?认为IDE是“限制”的想法是愚蠢的,如果你可以使用IDE来加速某些事情,但仍然能够在需要时使用命令行。

综上所述,我建议像上面几个人一样,尝试代码块。它有很好的代码高亮,一个相当容易的方法来创建一个项目,编码,运行它,等等,这是一个真正的IDE的核心,而且看起来相当稳定。调试糟透了……我从未在任何linux/unix版本中见过一个像样的交互式调试器。广发银行不是。如果您习惯了visual studio风格的调试,那么您就很不走运了。

不管怎样,我要去收拾我的东西了,我知道只有一个视图的linux人群会大声嚷嚷,很快把我赶出城。

我使用Eclipse CDT和Qt Creator(用于Qt应用程序)。

这是我的偏好。这是一个很有启发性的问题,有多少开发者就有多少答案。:)

也许Linux Tools Project for Eclipse可以满足您的需求?

Linux Tools项目旨在为Linux开发人员提供功能齐全的C和c++ IDE。我们以CDT的源代码编辑和调试特性为基础,并集成了流行的本地开发工具,如GNU Autotools、Valgrind、OProfile、RPM、SystemTap、GCov、GProf、LTTng等。目前的项目包括LTTng跟踪查看器和分析器、RPM .spec编辑器、Autotools构建集成、Valgrind堆使用分析工具和OProfile调用分析工具。

一个简单的回答,只是为了给这个话题增加一点知识: 你一定要看看NetBeans。Netbeans 6.7特性如下:

C/ c++项目和模板:支持语法高亮显示, 自动完成代码,自动缩进。 它有一个C/ c++调试器 支持编译器配置,配置管理器和Makefile支持 向导)。 它有一个类窗口,一个用法窗口和一个文件导航窗口(或面板)。 一个宏展开视图,还有工具提示。 支持QT开发。

我认为它是Visual Studio的完美替代品,也是学习C/ c++的好工具。

好运!

我个人最喜欢的是CodeLite 2。x IDE。

参见:http://www.codelite.org

使用CodeLite的决定是基于对以下Linux c++ IDE的研究:

Eclipse Galileo与CDT插件 NetBeans 6.7(它也是SunStudio IDE的基础) KDevelop4 CodeBlocks 8.02 CodeLite 2.倍

毕竟我决定使用CodeLite 2.x。

下面我列出了关于上述c++ ide的一些优点和缺点。请注意,这只是我个人的意见!

编辑:很遗憾,SOF不支持表格,所以我必须写在段落…

Eclipse Galileo与CDT插件

优点:

合理的快 也支持Java, Perl(带E.P.I.C插件) 常用且维护良好 也适用于其他操作系统(Windows, MacOS, Solaris, AIX(?))

缺点:

GUI非常混乱,有些不一致——一点都不直观 重的重量 仅支持CVS (AFAIK)

NetBeans 6.7(注意这也是SunStudio IDE的基础)

优点:

这是我见过的最直观的GUI之一 也支持Java, Python, Ruby 集成CVS, SVN, Mercurial 常用且维护良好 也适用于其他操作系统(Windows, MacOS, Solaris)

缺点:

非常的缓慢 重的重量 使用空格缩进,这不是我工作的政策。我相信这是可配置的,但我不知道如何做到这一点

KDevelop4(注意:我没有对它进行太多测试)

优点:

Linux上常用 集成CVS, SVN, Mercurial

缺点:

GUI看起来有些过时 重的重量 非常特定于KDE环境

CodeBlocks 8.02(注意:我没有对它进行太多测试)

优点:

合理的快

缺点:

GUI看起来有些过时(尽管它有一个很好的启动屏幕) 编辑器中的字体非常小 一些图标(例如调试器相关的开始/步进图标)非常小 没有源代码控制集成

CodeLite 2。X(注:这是我个人的最爱)

优点:

我在Linux上见过的最好的、现代的、直观的GUI 轻量级 合理的快 集成了SVN 也适用于其他操作系统(Windows, MacOS, Solaris(?))

缺点:

没有CVS集成(这对我来说很重要,因为我必须在工作中使用它) 不支持Java, Perl, Python(如果有的话就好了)