C ++ IDE для Linux? [закрыто]

209

Я хочу расширить свои горизонты программирования на Linux. Хороший, надежный базовый набор инструментов важен, и что является более основным, чем IDE?

Я мог бы найти эти ТАКИЕ темы:

Я не ищу легкую IDE. Если IDE стоит денег, то я заплачу за это, поэтому она не должна быть бесплатной.

Тогда мой вопрос:

Что хорошего в программировании на С ++ для Linux?

Минимумы достаточно стандартные: подсветка синтаксиса, завершение кода (например, intellisense или его аналог Eclipse) и встроенная отладка (например, базовые точки останова).

Я искал это сам, но их так много, что практически невозможно отделить хорошее от плохого вручную, особенно для такого, как я, у которого мало опыта программирования на C ++ в Linux. Я знаю, что Eclipse поддерживает C ++ , и мне действительно нравится эта IDE для Java, но хорошо ли это для C ++ и есть ли что-то лучше?

Во втором посте на самом деле есть несколько хороших предложений, но я упускаю то, что именно делает интегрированную среду разработки настолько полезной для пользователя, каковы ее (не) преимущества?

Может быть, поэтому мой вопрос должен быть:

Какую IDE вы предлагаете (учитывая ваш опыт) и почему?

Питер Мортенсен
источник
1
Это, я думаю, четвертый вопрос «Какой IDE мне следует использовать в Linux» за день или два.
Бен Коллинз
Может быть, вам стоит посмотреть дату, когда был задан этот вопрос ... или указать новые вопросы здесь
Sven
В последнем выпуске Eclipse интегрировал eclipse.org/linuxtools в свой выпуск - этот проект нацелен на то, чтобы сделать Eclipse более полноценной C / C ++ IDE для Linux за счет интеграции специфических для Linux инструментов.
Жан Хоминал

Ответы:

259

Первоначально: путаница

При первоначальном написании этого ответа я недавно переключился с Visual Studio (с многолетним опытом работы) на Linux, и первым делом я попытался найти разумную среду разработки. В то время это было невозможно: не было хорошей IDE.

Крещение: UNIX - это IDE. Все это. 1

И тогда я понял, что IDE в Linux - это командная строка с ее инструментами:

  • Сначала вы создали свою оболочку
    • Bash, в моем случае, но многие люди предпочитают
    • рыба или
    • (Oh My) Zsh ;
  • и ваш редактор; забрать свой яд - оба являются современными

В зависимости от ваших потребностей, вам нужно будет установить и настроить несколько плагинов, чтобы редактор работал хорошо (это одна раздражающая часть). Например, большинство программистов на Vim получат выгоду от плагина YouCompleteMe для интеллектуального автозаполнения.

Как только это будет сделано, оболочка станет вашим командным интерфейсом для взаимодействия с различными инструментами - отладчиками (gdb), профилировщиками (gprof, valgrind) и т. Д. Вы настраиваете среду проекта / сборки с помощью Make , CMake , SnakeMake или любого из различных альтернативы. И вы управляете своим кодом с помощью системы контроля версий (большинство людей используют Git ). Вы также используете tmux (ранее также экран), чтобы мультиплексировать (= думать о нескольких окнах / вкладках / панелях) и сохранить сеанс терминала.

Дело в том, что благодаря оболочке и нескольким соглашениям о написании инструментов все они интегрируются друг с другом . Таким образом, оболочка Linux представляет собой действительно интегрированную среду разработки , полностью соответствующую другим современным средам разработки. (Это не означает, что отдельные IDE не имеют функций, которые могут отсутствовать в командной строке, но обратное также верно.)

Каждому свое

Я не могу преувеличить, насколько хорошо работает вышеуказанный рабочий процесс, как только вы вошли в привычку. Но некоторые люди просто предпочитают графические редакторы, и за годы, прошедшие с момента написания этого ответа, Linux получил набор отличных графических IDE для нескольких разных языков программирования (но, насколько я знаю, для C ++). Дайте им попробовать, даже если - как я - вы в конечном итоге не используете их. Вот только небольшой и предвзятый выбор:

  • Для разработки на Python есть PyCharm
  • Для R есть RStudio
  • Для JavaScript и TypeScript есть код Visual Studio (который также является хорошим всесторонним редактором)
  • И, наконец, многие люди любят текстовый редактор Sublime для общего редактирования кода.

Имейте в виду, что этот список далеко не полный.


1 Я украл этот заголовок из комментария DSM.

2 Я имел в виду здесь Vim. И хотя обычный Vim все еще более чем способен, Neovim является многообещающим перезапуском, и он модернизировал несколько старых бородавок.

Конрад Рудольф
источник
223
я категорически не согласен достойный иде важен независимо от того, над чем ты работаешь. это резко увеличивает производительность. Я использую кодовые блоки и нахожу, что возвращение к ВИ практически невозможно. Я написал код для Mac, Win и Linux, и, хотя я считаю Visual Studio лучшей IDE, кодовые блоки приближаются.
DavidG
35
Дэвид, возможно, ты мог бы подробно описать (собственный ответ ...), что именно тебе не хватает в описанной мной цепочке инструментов, которую предоставляет среда IDE. Как я уже сказал, у меня сильный опыт в среде IDE, и мой рост производительности оказался абсолютно противоположным вашему.
Конрад Рудольф
48
Какую поддержку рефакторинга предлагает Vim? В Eclipse (который работает под Linux) я могу изменить имя любого Java-метода, который мне нужен, даже если он вызывается в 300 местах. Вы можете сделать это легко в Vim?
Quant_dev
25
quant_dev: рефакторинг требует некоторого анализа исходного кода. Насколько я знаю, ни один модуль VIM не делает этого, поэтому ответ на ваш вопрос «нет». Это одна из причин, по которой предпочтение отдается среде IDE для таких языков, таких как Java. Поскольку поддержка рефакторинга (и т. Д.) Для C ++ в любом случае настолько минимальна (даже в IDE), это не относится к C ++.
Конрад Рудольф
11
@ Hasen: о, но большая часть этого может . Например, переименование с учетом области видимости. И поверь мне, это большое . И Ecplise (например) может сэкономить много работы здесь.
Конрад Рудольф
86

Мой личный фаворит - IDE CodeLite 2.x.

см .: http://www.codelite.org

Решение использовать CodeLite было основано на исследовании, касающемся следующей C ++ IDE для Linux:

  • Затмение Галилео с плагином CDT
  • NetBeans 6.7 (который также является основой для среды разработки SunStudio)
  • KDevelop4
  • CodeBlocks 8.02
  • CodeLite 2.x

В конце концов я решил использовать CodeLite 2.x .

Ниже я перечислил некоторые «за» и «против» относительно упомянутых C ++ IDE. Обратите внимание, что это отражает только мое личное мнение!

РЕДАКТИРОВАТЬ : как жаль, что SOF не поддерживает таблицы, поэтому я должен писать в параграфах ...

Затмение Галилео с плагином CDT

Плюсы:

  • разумно быстро
  • также поддерживает Java, Perl (с плагином EPIC)
  • обычно используется и в хорошем состоянии
  • также доступно для других версий ОС (Windows, MacOS, Solaris, AIX (?))

Минусы:

  • GUI очень запутанный и несколько непоследовательный - совсем не интуитивно понятный
  • тяжелый вес
  • Поддерживает только CVS (AFAIK)

NetBeans 6.7 (обратите внимание, что это также основа для SunStudio IDE)

Плюсы:

  • один из самых интуитивно понятных графических интерфейсов, которые я когда-либо видел
  • также поддерживает Java, Python, Ruby
  • интегрирует CVS, SVN, Mercurial
  • обычно используется и в хорошем состоянии
  • также доступно для других версий ОС (Windows, MacOS, Solaris)

Минусы:

  • очень медленно
  • тяжелый вес
  • использует отступы для отступов, что не является политикой в ​​моей работе. Я уверен, что это настраивается, но я не мог узнать, как это сделать

KDevelop4 (примечание: я не много тестировал на нем)

Плюсы:

  • обычно используется в Linux
  • интегрирует CVS, SVN, Mercurial

Минусы:

  • GUI выглядит несколько старомодно
  • тяжелый вес
  • очень специфично для среды KDE

CodeBlocks 8.02 (примечание: я не много тестировал на нем)

Плюсы:

  • разумно быстро

Минусы:

  • GUI выглядит несколько старомодно (хотя у него хороший стартовый экран)
  • шрифты в редакторе очень маленькие
  • некоторые значки (например, значки запуска / перехода, связанные с отладчиком) очень маленькие
  • нет интеграции с системой контроля версий

CodeLite 2.x (примечание: это мой личный фаворит)

Плюсы:

  • лучший, современный и интуитивно понятный графический интерфейс, который я видел в Linux
  • легкий
  • разумно быстро
  • интегрирует SVN
  • также доступно на других версиях ОС (Windows, MacOS, Solaris (?))

Минусы:

  • нет интеграции CVS (это важно для меня, потому что я должен использовать его на работе)
  • нет поддержки Java, Perl, Python (было бы неплохо иметь)
Anon
источник
14
Eclispe поддерживает Hg, Git, SVN и другие через плагины. И заставки / заставки сосут огромные шары. Они высасывают ресурсы и предлагают очень мало пользы. И они обычно появляются перед тем, над чем я работаю, ожидая загрузки приложения. PortableApps и Eclipse должны избавиться от них.
Крис К
4
Для отладки Codelite получил тот же самый ярлык на клавиатуре, что и Visual Studio, что делает его очень удобным для пользователей-наркоманов.
Рауль Суперкоптер
Возможно, здесь бьют старую лошадь, но графический интерфейс IMO Eclipse действительно не имеет себе равных. Да, сначала трудно учиться, но это похоже на Vi, где производительность начинает стремительно расти после того, как вы поднялись по крутой кривой обучения. Чтобы доказать свою точку зрения, попробуйте нажать Ctrl + 3 - одну из самых потрясающих функций в затмении IMO.
kizzx2
«Минусы: использует пробелы для отступа [...] Я уверен, что это настраивается, но я не мог найти, как это сделать». Это показывает, что вы действительно не привыкли к инструменту, в противном случае вы бы в конечном итоге нашли вариант.
Йохан Буле
5
CodeLite потрясающий, как жевательная резинка на дентине. Это оставит свежий и мятный вкус во рту. Затмение, хотя и является отличительным, также дает вам эту рвоту после вкуса, когда вы используете его. Я знаю, это звучит по-детски, но это действительно лучшая метафора для объяснения «ощущения» от их использования. Я уверен, что другие согласятся со мной.
Дидье А.
75
  1. Code :: Blocks
  2. Eclipse CDT

Вскоре вы обнаружите, что IDE недостаточно, и вам все равно придется изучать инструментарий GCC (что не сложно, по крайней мере, изучить основные функции). Но без вреда в уменьшении переходной боли с IDE, IMO.

Имран
источник
+1 для кодовых блоков, и да, вы определенно захотите узнать хотя бы, как компилировать и запускать ваши программы из оболочки, потому что у code :: blocks есть некоторые недостатки.
Earlz
Затмение совсем не легкое ИМХО, Code :: Blocks ... просто
rubenvb
7
-1 для кодовых блоков. -1 для затмения. Они оба меняют свой интерфейс во время отладки. К моменту, когда начинающий пользователь обычно чувствует себя потерянным. Они оба не могут отлаживать форк. У них обоих неприятные проблемы с интеграцией SVN / CVS. (Последнее затмение в тандеме с Subclipse не работает в Gnome с 28.04.11 и происходит каждые 10 минут). Настройка управления исходным кодом - это кошмар, и интеграция с этими IDE так же сложна.
bleepzter
4
@bleepzter -1 для использования SVN / CVS для начала;)
OneOfOne
1
Mercurial, Git и Bazaar, которые превосходят во всех отношениях.
OneOfOne
66

Быстрый ответ, просто чтобы добавить немного знаний к этой теме:
вы обязательно должны проверить NetBeans . Netbeans 6.7 имеет следующие особенности:

  • Проекты и шаблоны C / C ++: Поддержка подсветки синтаксиса, автоматического завершения кода, автоматического отступа.
  • Имеется отладчик C / C ++
  • Поддерживает конфигурации компилятора, Configuration Manager и поддержку Makefile (с помощью мастера).
  • Он имеет окно классов, окно использования и окно навигации по файлу (или панель).
  • Представление макроса , а также всплывающие подсказки .
  • Поддержка разработки QT .

Я думаю, что это идеальная (и гораздо лучше) замена Visual Studio и очень хороший инструмент для изучения C / C ++.

Удачи!

ramayac
источник
2
Это также очень хорошо для C ++. У него самый лучший анализатор языков.
Йохан Буле
1
Netbeans мне понравился гораздо больше, чем Eclipse для разработки на c ++.
Томас Лэнгстон
9
NetBeans намного приятнее, чем Eclipse, я действительно хочу, чтобы больше людей начали это понимать.
Дидье А.
1
После нескольких недель борьбы с Eclipse я нашел это, переключился на NetBeans и спасибо! У него более приятный интерфейс, он более отзывчивый, интуитивно понятный и настраиваемый. Бьет Затмение руки вниз
Фредерик
1
Еще один голос за то, насколько лучше NetBeans, чем Eclipse. Он также имеет лучшую эмуляцию Vim (в качестве плагина), которую я когда-либо использовал.
думал на
52

По крайней мере, для конкретных проектов Qt, Qt Creator (от Nokia / Trolltech / Digia) показывает большие перспективы.

Henrik Hartz
источник
10
Я использую его и для не-Qt проектов.
шанс
Это хорошо. Я пробовал и мне это очень нравится.
Тайлер Лонг
32

Не могли бы вы прояснить немного больше, как это было для вас, что вы должны были изменить. Может быть, вы могли бы указать мне правильное направление, предоставив некоторые ссылки на информацию, которую вы использовали.

Моим первым источником были manстраницы инструментов . Просто введите

$ man toolname

в командной строке ( $здесь часть приглашения, а не ввод).

В зависимости от платформы, они довольно хорошо написаны и могут быть найдены в Интернете. В случае make, я фактически прочитал полную документацию, которая заняла несколько часов. На самом деле, я не думаю, что это необходимо или полезно в большинстве случаев, но у меня было несколько особых требований в моих первых заданиях под Linux, которые требовали сложного make-файла. После написания make-файла я передал его опытному коллеге, который сделал несколько небольших изменений и исправлений. После этого я в значительной степени знал make.

Я использовал GVIM, потому что у меня был некоторый (но не очень) предыдущий опыт, я ничего не могу сказать об Emacs или альтернативах. Я считаю, что это действительно помогает читать .gvimrcконфигурационный файл других людей . Многие люди размещают это в сети. Вот мой .

Не пытайтесь освоить все binutils сразу, слишком много функций. Но получите общий обзор, чтобы вы знали, где искать, когда что-то понадобится в будущем. Вы должны знать все важные параметры для g++и ld(средство компоновки GCC, которое вызывается автоматически, за исключением случаев, когда это явно запрещено).

Также мне любопытно, есть ли у вас завершение кода и подсветка синтаксиса при кодировании?

Подсветка синтаксиса: да, и намного лучше, чем Visual Studio. Код завершения: Да - иш . Во-первых, я должен признать, что я не использовал завершение кода C ++ даже в Visual Studio, потому что (по сравнению с VB и C #) это было недостаточно хорошо. Сейчас я не часто его использую, но, тем не менее, GVIM имеет встроенную поддержку завершения кода для C ++. В сочетании с ctags библиотекой и плагином, подобным taglist, это почти IDE.

На самом деле, то, что заставило меня начать, была статья Армин Ронахер. Прежде чем читать текст, посмотрите на скриншоты в конце!

Вы должны сначала скомпилировать перед тем, как получить (синтаксические) ошибки?

Да. Но то же самое для Visual Studio, не так ли (я никогда не использовал Whole Tomato)? Конечно, подсветка синтаксиса покажет вам несоответствующие скобки, но это все.

и как вы отлаживаете (опять же думаете, точки останова и т. д.)?

Я использую gdbкоторый является инструментом командной строки. Там также графический интерфейс называется DDD. gdbэто современный инструмент отладки и может делать все, что вы можете сделать в IDE. Единственное, что меня действительно раздражает, это чтение трассировки стека, потому что строки не имеют отступов и форматирования, поэтому очень сложно сканировать информацию, когда вы используете много шаблонов (что я и делаю). Но они также загромождают трассировку стека в IDE.

Как я уже сказал, я имел «удовольствие» установить свои первые шаги на языке программирования Java, используя блокнот Windows и компилятор Java в командной строке в старшей школе, и это было, ну, конечно, кошмар! конечно, когда я мог сравнить это с другими курсами программирования, которые у меня были тогда, где у нас были приличные IDE

Вам даже не следует сравнивать современный полнофункциональный редактор, такой как Emacs или GVIM, с Блокнотом. Блокнот - украшенный TextBoxэлемент управления, и это действительно имеет значение. Кроме того, работа в командной строке - это совсем другой опыт в Linux и Windows. Окна cmd.exeсильно повреждены. PowerShell намного лучше.

/ РЕДАКТИРОВАТЬ: я должен четко упомянуть, что GVIM имеет редактирование с вкладками (как в просмотре вкладок, а не как табуляции) Мне потребовались годы, чтобы найти их, хотя они совсем не спрятаны. Просто введите :tabeвместо обычного :eпри открытии файла или создании нового, и GVIM создаст новую вкладку. Переключение между вкладками может осуществляться с помощью курсора или нескольких различных сочетаний клавиш (в зависимости от платформы). Клавиша gt(тип g, затем tв командном режиме) должна работать везде и переходить к следующей вкладке или вкладке №. п, если число было дано. Типа, :help gtчтобы получить больше помощи.

Конрад Рудольф
источник
@confuzatron: Нет, я использую GDB по нескольким причинам. Самое главное, я обычно работаю без запуска X-сервера. Кроме того, мне немного не по себе от того, что DDD не видел обновлений в течение достаточно долгого времени. С другой стороны, право собственности на проект только что изменилось, и похоже, что изменения происходят.
Конрад Рудольф
Спасибо за информацию о вкладке в адрес gvim, никогда не
обновляйтесь
VS2010 выделяет синтаксические ошибки без компиляции.
Candy Chiu
@Candy true, VS2010 многое изменил в этом отношении и добавил расширенные функции для фоновой компиляции. Но тем временем gvim также добавил множество функций через плагины. В частности, вы можете, вероятно, получить подсветку синтаксических ошибок без компиляции через clang_completeплагин. Этот ответ с 2009 года, а некоторые части устарели. Но были улучшения со всех сторон, так что это более или менее выравнивается.
Конрад Рудольф
25

Не повторять ответ, но я думаю, что могу добавить немного больше.

Slickedit - отличная среда разработки.

Он хорошо поддерживает большие базы кода, не замедляя и не тратя все свое время на индексацию. (Это проблема, которая у меня была с CDT затмения). Скорость Slickedit, пожалуй, самая приятная вещь на самом деле.
Завершение кода работает хорошо, и есть много вариантов для таких вещей, как автоматическое форматирование, украшение и рефакторинг.
Он имеет встроенную отладку.
Он имеет поддержку плагинов и довольно активное сообщество, создающее их.
Теоретически, вы должны быть в состоянии хорошо интегрироваться с людьми, занимающимися традиционным make-файлом, так как это позволяет вам создавать проект непосредственно из одного, но это не сработало так гладко, как мне бы хотелось, когда я его пробовал.
Помимо Linux, существуют версии для Mac и Windows, если они вам понадобятся.

RCK
источник
23

Как старый UNIX парень, я всегда использую Emacs. Но у этого есть довольно крутая и длинная кривая обучения, поэтому я не уверен, что могу рекомендовать это новичкам.

Там действительно нет "хорошей" IDE для Linux. Eclipse не очень хорош для C / C ++ (CDT улучшается, но пока не очень полезен). Другие упускают все функции, которые вы будете искать.

Очень важно узнать, как работают все отдельные инструменты (gcc, make, gdb и т. Д.). После того, как вы это сделаете, вы можете обнаружить, что Visual Studio делает это очень ограниченно.

Кристофер Джонсон
источник
Eclipse CDT "еще не очень полезен?" Разработка была бы полезна. Я нахожу это чрезвычайно полезным (и простым в использовании).
Джон Цвинк
«пока не очень полезно»: автозаполнение часто не работает, переход к объявлениям или использование функций не работает, подсветка синтаксиса не всегда работает, рефакторинг не работает и т. д. Это немного лучше, чем использование vi. Интерфейс внешнего интерфейса GDB - это единственное, что делает его вообще полезным, IMHO.
Кристофер Джонсон
Я действительно не пробовал рефакторинг с CDT, но другие вещи, кажется, работают. Отмечу, что я запускаю Eclipse с некоторыми довольно большими параметрами конфигурации максимального использования памяти (у меня 8-12 ГБ ОЗУ), но, похоже, все в порядке.
Джон Цвинк
В прошлый раз, когда я пробовал Eclipse CDT, синтаксический / семантический анализатор для автозаполнения заставлял всю IDE зависать на 8 секунд каждый раз, когда он вызывался. Это сделало всю функцию бесполезной. Я не могу поверить, что вещь не работала в своем собственном потоке. Это было два года назад, так что, надеюсь, сейчас исправлено. (верно?)
Я нахожу CDT потрясающим для моих набегов в QT и Boost. На Windows с Mingw это имеет свои проблемы, но в надлежащей среде Posix автозаполнение отлично работает! Навигация к декларациям на самом деле является единственной вопиющей дырой. Но, учитывая, что C ++ может иметь несколько одинаковых объявлений, я не удивлен. Решить эту проблему сложнее, чем в Java.
Крис К
18

Оформить заказ Netbeans, он написан на Java, поэтому у вас будет одинаковая среда независимо от вашей ОС, и он поддерживает гораздо больше, чем просто C ++.

Я не буду пытаться убедить вас, потому что я думаю, что IDE могут быть очень личным выбором. Для меня это повышает мою производительность, будучи быстрым, поддерживая языки, на которых я кодирую, и имеет стандартные функции, которые вы ожидаете от IDE.

Стив М
источник
5
Я просто могу добавить +1 к этому. Netbeans имеет лучший синтаксический анализатор языка C ++, который я видел в ide; бьет затмение CDD.
Йохан Буле
18

Просто быстрое продолжение этого вопроса ...

Прошел месяц с тех пор, как я начал использовать Vim в качестве основного инструмента с графическим интерфейсом для программирования C ++ в Linux. Сначала кривая обучения была действительно немного крутой, но через некоторое время и с включенными правильными опциями и запущенными скриптами я действительно понял это!

Мне нравится, как вы можете настроить Vim для удовлетворения ваших потребностей; просто добавить / изменить сопоставления клавиш, и Vim превращается в высокопроизводительную среду IDE.

Инструментарий для сборки и компиляции программы на С ++ в Linux также интуитивно понятен. make и g ++ являются этими инструментами , которые вы будете использовать.

Отладчик ддд , однако , не так уж хорошо, но , возможно , это потому , что у меня не было времени , чтобы освоить это правильно.

Таким образом, для любого, кто ищет или ищет хорошую C ++ IDE в Linux, как и я, ваша лучшая ставка лежит на стандартных доступных инструментах в самой Linux (Vim, g ++, ddd), и вы должны хотя бы попытаться использовать их, прежде чем искать сонетинг еще ...

И последнее, но не менее важное, я действительно хочу поблагодарить Конрада за его ответ здесь. Это действительно помогло мне найти свой путь в среде разработки Linux, спасибо!

Я также не закрываю этот вопрос, так что люди могут по-прежнему реагировать или, возможно, даже добавлять новые предложения или дополнения к уже по-настоящему приятным ответам ...

sven
источник
Можете ли вы заставить функции IntelliSense-ish работать в Vim + ctags? Не просто автозаполнение, а контекстно-зависимая информация, такая как список параметров для функции и т. Д.?
kizzx2
@ kizzx2: Да , есть есть много вариантов .
Фред Нурк
12

Краткий ответ: выберите любой «редактор», который вам нравится, затем используйте консоль GDB или простой интерфейс GDB для отладки вашего приложения. Отладчики поставляются с модными IDE, такими как Netbeans sucks для C / C ++. В качестве редактора я использую Netbeans, а в качестве отладчика - консоль Insight и GDB.

Благодаря пониманию у вас есть хороший графический интерфейс и мощь GDB.

Как только вы привыкнете к командам GDB, вы начнете любить его, так как вы можете делать то, что вы никогда не сможете сделать, используя графический интерфейс. Вы можете использовать даже использовать Python качестве языка сценариев, если вы используете GDB 7 или более новую версию.

Большинство людей здесь уделяют больше внимания «редакторам» IDE. Однако, если вы разрабатываете большой проект на C / C ++, вы можете легко потратить более 70% своего времени на «отладчики». Отладчики модных IDE по крайней мере на 10 лет отстают от Visual Studio. Например, Netbenas имеет очень похожие интерфейсы с Visual Studio. Но его отладчик имеет ряд недостатков по сравнению с Visual Studio.

  1. Очень медленно отображать даже массив с несколькими сотнями элементов
  2. Нет подсветки для измененного значения (по умолчанию Visual Studio отображает измененные значения в окнах наблюдения красным цветом)
  3. Очень ограниченная способность показывать память.
  4. Вы не можете изменить исходный код, а затем продолжить работу. Если ошибка занимает много времени, вы хотите изменить исходный код, применить изменения в реальном времени и продолжить работу приложения.
  5. Вы не можете изменить «следующий оператор» для запуска. В Visual Studio вы можете использовать «Задать следующий оператор», чтобы изменить работу вашего приложения. Хотя эта функция может привести к сбою приложения, если она не используется должным образом, она сэкономит вам много времени. Например, если вы обнаружили, что состояние вашего приложения неверное, но вы не знаете, что вызвало проблемы, вы можете захотеть повторно запустить определенный регион ваших исходных кодов без перезапуска приложения.
  6. Нет встроенной поддержки STL, такой как vector, list, deque, map и т. Д.
  7. Нет очков наблюдения. Вы должны иметь эту функцию, когда вам нужно остановить приложение прямо в момент изменения переменной. Компьютеры на базе Intel имеют аппаратные контрольные точки, поэтому контрольные точки не замедляют работу вашей системы. Поиск труднодоступных ошибок без использования контрольных точек может занять много часов. «Visual Studio» вызывает «указатель наблюдения» как «Точка останова данных».

Список может быть намного длиннее.

Я был так расстроен недостатками Netbeans или других подобных IDE, что начал изучать саму GDB. Я обнаружил, что сам GDB очень мощный. GDB не имеет всех «недостатков», упомянутых выше. На самом деле, GDB очень мощный, во многих отношениях он даже лучше, чем Visual Studio. Здесь я просто покажу вам очень простой пример.

Например, у вас есть такой массив:

struct IdAndValue
{
  int ID;
  int value;
};


IdAndValue IdAndValues[1000];

Когда ваше приложение останавливается, и вы хотите проверить данные в IdAndValues. Например, если вы хотите найти порядковые номера и значения в массиве для определенного «идентификатора», вы можете создать скрипт, подобный следующему:

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 (встроенные или определенные пользователем). ).

Используйте PrintVal 1 из приглашения GDB, чтобы распечатать значения для идентификатора "1"

Кстати, NetBeans поставляется с консолью GDB, но, используя консоль, вы можете аварийно завершить работу NetBeans. И я считаю, что именно поэтому консоль по умолчанию скрыта в NetBeans

Чарльз Чжан
источник
Хорошая точка зрения. Но, к сожалению, у GDB чрезвычайно крутая кривая обучения. Я использую его уже много лет, и до сих пор никогда не использовал макросы, и (хотя я знаю, что это возможно с помощью макросов!) Любой код STL, который я на него набрасываю, не может быть отлажен лучше, чем в современных средах разработки.
Конрад Рудольф
Я потратил 2 дня, чтобы освоить большинство команд в GDB. Когда вы узнаете всю мощь GBD, вы никогда не оглянетесь назад. Это сэкономит вам много времени, когда вы исправите трудно обнаруживаемые ошибки.
Чарльз Чжан
11

Я с помощью " Geany " нашел пока хорошее, это быстрый и легкий IDE.

Среди особенностей Джани :

  • Сворачивание кода
  • Сохранение сессии
  • Основные функции IDE, такие как подсветка синтаксиса, вкладки, автоматическое отступление и завершение кода
  • Простое управление проектом
  • Система сборки
  • Выбор цвета (на удивление удобно при веб-разработке)
  • Эмуляция встроенного терминала
  • Звоните советы
  • Списки символов
  • Автозаполнение общих конструкций (например, if, else, while и т. Д.)
оборота TheCottonSilk
источник
10

Если вам нравится Eclipse для Java, я предлагаю Eclipse CDT. Несмотря на то, что поддержка C / C ++ не такая мощная, как для Java, она по-прежнему предлагает большинство функций. У него есть хорошая функция под названием Managed Project, которая облегчает работу с проектами C / C ++, если у вас нет опыта работы с Makefiles. Но вы все равно можете использовать Makefiles. Я занимаюсь программированием на C и Java, и я действительно доволен CDT. Я разрабатываю прошивку для встраиваемого устройства на C и приложение на Java, которое взаимодействует с этим устройством, и очень приятно использовать одну и ту же среду для обоих. Я думаю, это, вероятно, делает меня более продуктивным.

jassuncao
источник
9

Мне нравится, как люди полностью пропускают запрос в оригинальном вопросе для IDE. Linux НЕ является IDE. Это просто не то, что означают эти слова. Я изучил c и c ++, используя vi, gcc и make, и я не говорю, что они не являются адекватными инструментами, но они НЕ являются IDE. Даже если вы используете более сложные инструменты, такие как vim или emacs, или любой другой модный редактор, который вы хотите, ввод команд в командной строке не является IDE.

Кроме того, вы все знаете, что make существует как часть визуальной студии, верно? Идея о том, что IDE является «ограничивающей», просто глупа, если вы можете использовать IDE для ускорения некоторых вещей, но при этом все равно сможете использовать командную строку при необходимости.

Все, что я сказал, я бы предложил, как и несколько выше, пробовать блоки кода. Он получил достойную подсветку кода, довольно легкий способ создания проекта, кодирования, запуска и т. Д., Который является ядром настоящей IDE и выглядит довольно стабильным. Отладка отстой ... Я никогда не видел достойного интерактивного отладчика в любом варианте Linux / Unix. GDB не так. Если вы привыкли к визуальной отладке в студийном стиле, вам не повезло.

В любом случае, я пойду собирать свои вещи, я знаю, что толпа linux только для одного будет кричать об этом и быстро выгонит меня из города.

Какой-то парень
источник
У вас есть пункт. Это не IDE, как мы его знаем. Однако интересно, что ОП проголосовал за этот ответ! Прибиваю мои краски к мачте: я фанат make-файлов командной строки.
ScrollerBlaster
Наконец, кто-то, у кого есть мозги ... Я думаю, что другие просто пишут тривиальные вещи, если они могут делать все с помощью emacs / vim.
Пиппо
8

make + vim + gdb = одна отличная IDE

Мэтт Фичман
источник
7

Мне очень нравится IDE Ultimate ++ . У него есть некоторые функции, которые были разработаны для использования со своей собственной библиотекой (что, кстати, довольно неплохой инструментарий, если вы не хотите покупать ни на GTK +, ни на QT), но оно прекрасно работает с обычными проектами на C ++. Он обеспечивает достойное завершение кода, хорошую раскраску синтаксиса, встроенную отладку и все другие функции, которые поддерживает большинство современных IDE.

dguaraglia
источник
Вот Это Да! Что касается скриншотов, это действительно выглядит потрясающе! Я обязательно попробую. Вы знаете, должен ли я платить за это? (Это не совсем ясно , на Ultimate ++ сайт)
Нет, это бесплатно, как в «речь», «пиво» ​​и «ездить». Они даже открыто говорят о принятии патчей и выпускают очень часто, так что это настолько же открытый исходный код, насколько это возможно :)
dguaraglia
7

Я действительно предлагаю кодовые блоки . Он не такой тяжелый, как Eclipse, и у него есть поддержка проекта Visual Studio.

DavidG
источник
6

Возможно, Linux Tools Project для Eclipse может удовлетворить ваши потребности?

Проект Linux Tools направлен на то, чтобы предоставить разработчикам Linux полнофункциональную среду разработки C и C ++. Мы опираемся на возможности редактирования и отладки исходного кода CDT и интегрируем популярные нативные инструменты разработки, такие как GNU Autotools, Valgrind, OProfile, RPM, SystemTap, GCov, GProf, LTTng и т. Д. Текущие проекты включают в себя средства просмотра и анализа трассировок LTTng, а также RPM .spec редактор, интеграция сборки Autotools, инструмент анализа использования кучи Valgrind и инструменты профилирования вызовов OProfile.

Jean Hominal
источник
6

В Linux существует множество IDE:

По моему опыту, наиболее ценными являются Eclipse и Qt Creator. . Оба предоставляют все «стандартные» функции (например, автозаполнение, подсветка синтаксиса, отладчик, интеграция с git). Стоит отметить, что Eclipse также предоставляет функции рефакторинга, а Qt Creator обеспечивает интеграцию с Valgrind и поддержку развертывания на удаленных целях.

Также коммерческая CLion IDE кажется очень хорошей (но я не использовал ее широко).

Claudio
источник
5

Я слышал, что Anjuta довольно приятна для пользователей Gnome. Я немного поиграл с KDevelop, и это здорово, но не хватает функциональности. Code :: Blocks также очень перспективен, и мне он больше нравится.

wvdschel
источник
5

Sun Studio версии 12 можно загрузить бесплатно (доступна БЕСПЛАТНАЯ и платная поддержка) - http://developers.sun.com/sunstudio/downloads/thankyou.jsp?submit=%A0FREE+Download%A0%BB%A0 .

Я уверен, что у вас есть поддержка завершения кода и отладки, включая поддержку плагинов в этой IDE.

Sun Studio доступна как для Linux, так и для Solaris. форумы: http://developers.sun.com/sunstudio/community/forums/index.jsp . Форумы Sun Studio Linux: http://forum.sun.com/forum.jspa?forumID=855

Я буду рад услышать ваши отзывы об этом инструменте.

BR,
~ A

anjanb
источник
5

Ранее я использовал Ultimate ++ IDE, и это довольно хорошо.

Эрнан
источник
5

А потом я заметил, что это просто не то, как вы там работаете *, и я все выбросил, потратил несколько дней на чтение руководств, настройку моей оболочки (bash), настройку среды GVIM, изучение цепочки инструментов GCC / binutils, сделать и GDB и жили долго и счастливо

Я бы в основном согласился, но проблема также заключается в восприятии: мы забываем, как трудно было работать продуктивно в любой выбранной IDE (или другой среде). Я нахожу IDE (Visual Studio, NetBeans, Eclipse) удивительно громоздким во многих отношениях.

Как старый UNIX парень, я всегда использую Emacs. Но у этого есть довольно крутая и длинная кривая обучения, поэтому я не уверен, что могу рекомендовать это новичкам.

Я поддержу это; используйте Emacs в качестве основного редактора для Linux и MSW (XP2, W2K). Я бы не согласился с тем, что у него крутая кривая обучения, но сказал бы, что из-за огромного количества функций у него длинная кривая обучения. Вы можете быть продуктивными в течение короткого времени, но если вы хотите, вы можете изучить его новые возможности на долгие годы.

Однако - не ожидайте, что все функции Emacs будут доступны в выпадающих меню, слишком много функций, чтобы найти их там.

Как я уже говорил, я годами использовал GNU Emacs на MSW. И он всегда хорошо работал с Visual Studio, пока я не «обновился» до 2008 года; теперь иногда происходит много секунд перед обновлением файлов с диска. Основной причиной редактирования в окне VS является функция завершения кода «Intellisense».

NVRAM
источник
5

Хотя я использую Vim, некоторые из моих коллег используют SlickEdit, который выглядит довольно хорошо. Я не уверен в интегрированной отладке, потому что мы не смогли бы сделать это в нашем конкретном проекте в любом случае.

SlickEdit имеет хорошую поддержку для навигации по большим базам кода с перекрестными ссылками и переходом по тегам. Конечно, у него есть базовые вещи, такие как подсветка синтаксиса и завершение кода.

Грег Хьюгилл
источник
5

Я использую Eclipse CDT и Qt Creator (для приложений Qt).

Это мои предпочтения. Это очень наводящий вопрос, и ответов на него столько же, сколько и разработчиков. :)

Этьен Савард
источник
4

SlickEdit. Я использую и люблю SlickEdit с 2005 года, как в Windows, так и в Linux. У меня также есть опыт работы в Visual Studio (5, 6, 2003, 2005) и только с Emacs и командной строкой. Я использую SlickEdit с внешними make-файлами, некоторые из моих товарищей по команде используют SlickEdit, другие используют Emacs / vi. Я не использую интегрированный отладчик, интегрированный контроль версий, интегрированную систему сборки: я нахожу слишком большую интеграцию, чтобы быть реальной болью. SlickEdit является надежным (очень мало ошибок), быстрым и интуитивно понятным. Это как немецкая машина, машина водителя.

Новейшие версии SlickEdit предлагают множество функций, которые меня не интересуют, я немного обеспокоен тем, что продукт будет раздутым и разбавленным в будущем. На данный момент (я использую V13.0) это здорово.

Радим Черней
источник
3

Для меня Ultimate ++ кажется лучшим решением для написания кросс-ОС.

IonLupascu
источник
3

Если вы долгое время использовали vim, вы должны сделать это своей IDE. Есть много доступных дополнений. Я нашел некоторые из них довольно полезными, и скомпилировал их здесь, взгляните на это.

И многое другое в серии советов и рекомендаций по vi / vim.

thegeek
источник