Есть ли C ++ GDB GUI для Linux? [закрыто]

210

Вкратце: кто-нибудь знает о графическом интерфейсе для GDB, который приводит его в соответствие или приближается к набору функций, который вы получаете в более поздней версии Visual C ++?

Подробно: как человек, который потратил много времени на программирование в Windows, один из самых больших камней преткновения, который я обнаруживал всякий раз, когда мне приходится кодировать C ++ в Linux, заключается в том, что отладка чего-либо с помощью командной строки gdb отнимает у меня в несколько раз больше времени, чем в Visual Studio, и, кажется, не становится лучше с практикой. Некоторые вещи проще или быстрее выразить графически.

В частности, я ищу графический интерфейс, который:

  • Обрабатывает все основы, такие как перешагивание и вставка в код, наблюдение за переменными и точками останова
  • Понимает и может отображать содержимое сложных и вложенных типов данных C ++
  • Не смущается и предпочтительно может разумно шагать по шаблонному коду и структурам данных, отображая соответствующую информацию, такую ​​как типы параметров
  • Может обрабатывать резьбовые приложения и переключаться между различными потоками, чтобы переходить или просматривать состояние
  • Может обрабатывать присоединение к уже запущенному процессу или чтение дампа памяти, помимо запуска программы в gdb

Если такой программы не существует, то я хотел бы услышать об опыте, который люди имели с программами, которые соответствуют хотя бы некоторым пунктам. У кого-нибудь есть рекомендации?

Изменить:
Перечисление возможностей это здорово, и я возьму то, что я могу получить, но было бы еще более полезно, если бы вы могли включить в свои ответы:
(а) действительно ли вы использовали этот GUI и если да, то какие положительные / отрицательные отзывы у вас есть по этому поводу.
(b) Если вы знаете, какие из вышеупомянутых функций поддерживаются / не поддерживаются

Списки легко найти, такие сайты хороши тем, что вы можете получить представление о личном опыте людей с приложениями.

HappyDude
источник
21
+1 за «Такие сайты хороши, потому что вы можете получить представление о личном опыте людей». Слишком много людей в наши дни просто делают дамп списка, который, по-моему, полностью упускает из виду.
kizzx2
1
Об обратном инжиниринге: reverseengineering.stackexchange.com/questions/1392/…
Сиро Сантилли 法轮功 冠状 病 六四 事件 法轮功
Посмотрите этот список внешних интерфейсов gdb здесь: sourceware.org/gdb/wiki/GDB%20Front%20Ends и дайте первый выстрел в списке. Выглядит очень многообещающе, современно и кроссплатформенно, поскольку основано на браузере: gdbgui.com .
Габриэль Стейплс

Ответы:

55

Вы не найдете ничего перекрывающего GDB, которое могло бы конкурировать с сырой мощью отладчика Visual Studio. Он слишком мощный и слишком хорошо интегрирован в IDE.

В качестве альтернативы Linux попробуйте DDD, если вам нравится бесплатное программное обеспечение.

Висент Марти
источник
2
WinDBG намного превосходит возможности Visual Studio. Визуальный студийный отладчик использует ту же архитектуру, что и WinDBG. С учетом вышесказанного, GDB нечего спрашивать, сравнивая его с Windbg. Графический отладчик, который лучше, чем DDD, был бы великолепен. Eclipse CDT - хорошая альтернатива. Я думаю, что был интерфейс KDE
bigmonachus
114
О, посмотри. Ответ, который предъявляет претензию, не поддерживая ее вообще. Я также нахожу странным, что ответ, который не отвечает на вопрос, был принят.
альтернатива
3
для любого, кто приходит сюда в поисках реального ответа, знайте, что DDD - это мусор. Лучший графический интерфейс отладчика для Linux, который я нашел, это IDA, который не является свободным программным обеспечением.
bkconrad
1
Ответь на вопрос как можно лучше или не говори ничего. Используя оба, Visual Studio более наполнен, но DDD достаточно хорош, чтобы я не скучал по VS. К сожалению, DDD показывает свой возраст.
Алан Де Смет
6
Этот пост необходимо обновить / улучшить. Qt Creator великолепен, наравне с Visual Studio.
Вхаррон
85

Eclipse CDT предоставит опыт, сопоставимый с использованием Visual Studio. Я ежедневно использую Eclipse CDT для написания кода и отладки локальных и удаленных процессов.

Если вы не знакомы с использованием IDE на основе Eclipse, к GUI придется немного привыкнуть. Однако, как только вы поймете идеи GUI, уникальные для Eclipse (например, перспектива), использование инструмента станет хорошим опытом.

Инструменты CDT предоставляют приличный индексатор C / C ++, который позволяет вам быстро находить ссылки на методы в вашей кодовой базе. Он также предоставляет хороший инструмент для расширения макросов и ограниченную поддержку рефакторинга.

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

Для получения дополнительной информации об отладке с помощью Eclipse CDT вы можете проверить эти руководства:

Джон Болл
источник
10
Чтение дампов ядра поддерживается. (Он называется «Отладчик после смерти».)
Джош Келли,
У меня был лучший опыт отладки Eclipse CDT, чем в Visual Studios. Я не дал MSVC слишком много шансов, хотя.
Нотлеш
3
Я думаю, что QtCreator следует упомянуть наряду с Eclipse, поскольку он сопоставим.
nonsensickle
78

GDB-TUI работает нормально, если вы хотите что-то с графическим интерфейсом, но все же на основе символов.


источник
45
Вы также можете перейти в режим TUI (текстовый интерфейс пользователя), находясь в gdb, используя команду '-'. Возвращение к командной строке - Ctrl-X Ctrl-A. В режиме TUI вверх, вниз, влево и вправо перемещаются по источнику. Используйте клавиши Ctrl-P, Ctrl-N, Ctrl-F и Ctrl-B для навигации по истории командной строки.
Бен Комби
Это именно то, что я искал. Сила командной строки GDB с некоторыми полезными представлениями, которые обновляются, когда я перемещаюсь.
Кевин Кокс
7
.Gdbinit на стероидах дает вам действительно впечатляющий графический интерфейс, основанный на персонажах, с цветом: github.com/cyrus-and/gdb-dashboard
cs01
Мне очень нравится GDB- Dashboard, но я должен упомянуть и Voltron .
nonsensickle
3
@ Барри, спасибо. Для любого любопытного, вот ссылка: github.com/cs01/gdbgui . Он имеет отображение структуры данных, похожее на DDD, архитектуру клиент / сервер для простой отладки удаленных машин без необходимости переадресации X, а также возможность исследования сложных переменных и т. Д.
cs01
47

Проверьте Nemiver C / C ++ Отладчик . Его легко установить в Ubuntu (Инструменты разработчика / Отладка).

Обновление: новая ссылка.

Сергей Шандар
источник
Абсолютно невероятно , также поддерживается apt: 'apt-get install nemiver'. Единственное, что я могу сказать - это сборка из хранилища, из-за которого «пакет gconf-2.0 не найден».
J Эванс
Интерфейс довольно понятный и удобный для чтения, но иногда происходит сбой при использовании возможностей интерфейса v0.9.6. Он также принимает параметры отлаженного приложения, что я до сих пор не могу позволить DDD сделать.
Водолей Сила
Также доступно на Fedora 30 (по крайней мере). Я просто случайно наткнулся на этот вопрос и еще раз.
user3236841
31

Qt Creator кажется хорошим материалом. Коллега показал мне один способ настроить его для отладки:

  • Создайте новый проект «Импорт проекта на основе Makefile».
  • Укажите его в корневой папке проекта (он будет индексировать источники под ним, и это впечатляюще быстро).
  • Перейдите в настройки проекта и добавьте конфигурацию запуска, затем укажите исполняемый файл, который вы хотите отладить, и его аргументы.
  • Qt Creator, похоже, настаивает на создании вашего проекта перед его отладкой. Если вы этого не хотите или не используете make, просто перейдите в проекты -> build (Левая панель), а затем на правой панели «Построить шаги» удалите все шаги, включая шаг по умолчанию, когда Вы создали проект.

Для отладки приложения, которое я уже скомпилировал, может показаться немного трудоемкой, но оно того стоит. Отладчик показывает потоки, стеки и локальные переменные аналогично Visual Studio и даже использует множество одинаковых сочетаний клавиш. Кажется, он хорошо обрабатывает шаблоны, по крайней мере, std :: string и std :: map. Присоединение к существующим процессам и дампам ядра, похоже, поддерживается, хотя я еще не тестировал его.

Имейте в виду, что я использовал его менее чем на час, но я до сих пор впечатлен.

Добродушный человек
источник
29

Мне не нравится идея разработки под Windows, но отладчик VC ++ - один из лучших, которые я видел. Я не нашел интерфейс GUI, который приближается к VC.

GDB - это круто, когда ты действительно привыкнешь. Используйте его в гневе достаточно, и вы станете очень опытным. Я могу без труда обходить программу, выполняя все перечисленные вещи без особых усилий. Потребовался месяц или около того страдания из-за SSH-связи с удаленным сервером, прежде чем я стал опытным. Я никогда не вернусь, хотя.

DDD действительно мощный, но он был довольно глючным. Я обнаружил, что он довольно часто замерз, когда получал сообщения от GDB о том, что он не работает. Это хорошо, потому что у него есть окно интерфейса GDB, так что вы можете видеть, что происходит, а также напрямую взаимодействовать с GDB. DDD не может быть использован для удаленного сеанса X в моей среде (реальная проблема, поскольку я сижу за тонким клиентом, когда я работаю с Unix dev) по какой-то причине, так что это для меня.

KDevelop следовал типичному стилю KDE и показывал ВСЕ пользователю. Мне также никогда не удавалось отлаживать не KDevelop программы в KDevelop.

Gnat Programming Studio (GPS) на самом деле является неплохим интерфейсом для GDB. Он не просто управляет проектами Ada, поэтому стоит попробовать, если вам нужен отладчик.

Вы могли бы использовать Eclipse, но он довольно тяжелый, и многие опытные люди из Unix, с которыми я работал (включая меня), не очень заботятся о его интерфейсе, который не просто STFU и не уйдет с вашего пути. Затмение также, кажется, занимает много места и бежит как собака.

Адам Хос
источник
2
Просто хотел подключить мой проект, gdbgui ( github.com/cs01/gdbgui ). Это клиент-серверная архитектура, поэтому она хорошо работает при отладке удаленных машин без необходимости X-сеанса. Он также имеет терминал для непосредственного взаимодействия с GDB и имеет визуальные элементы для отображения структур данных, аналогично DDD.
cs01
Сравнения с плюсами и минусами основаны на опыте. Как раз то, что нужно этому вопросу. ты
Хит
27

Я использую cgdb, простой и полезный

треска
источник
16

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

Кроме того, если вы не связаны с GDB и не возражаете потратить немного денег, я бы попробовал TotalView. У него немного крутая кривая обучения (он, безусловно, может быть более интуитивным), но это лучший отладчик C ++, который я когда-либо использовал на любой платформе, и он может быть расширен для интроспекции ваших объектов нестандартными способами (что позволяет вам просматривать Список STL как фактический список объектов, а не куча непонятных внутренних элементов данных и т. Д.)

Ник Бастин
источник
Я не могу заставить DDD работать над удаленным X вообще; просто вылетает с ошибками Xlib на моем тонком клиенте :(
Адам Хос
totalview выглядит как жизнеспособная альтернатива. Я не считаю, что DDD лучше интерфейса GDB Curses.
deft_code
8

Ознакомьтесь с проектом Eclipse CDT. Это плагин для Eclipse, предназначенный для разработки на C / C ++ и включающий в себя довольно многофункциональную перспективу отладки (которая за кулисами использует GDB). Он доступен на самых разных платформах.

user14636
источник
7

Аналогично интерфейсу eclipse gdb является интерфейс emacs, тесно связанный с IDE emacs. Если вы уже работаете с Emacs, вам понравится:

GDB Emacs Frontend

Йоханнес Шауб - Литб
источник
6

Я использовал KDbg (работает только под KDE).

CodeGuru
источник
3
KDbg не ограничивается KDE.
Нобар
Это потрясающе . Интересно, где это было все это время?
edmz
5

Я испробовал несколько разных интерфейсов для GDB и нашел, что DDD лучший из них. И хотя я не могу комментировать другие не-gdb предложения для linux, я использовал несколько других отладчиков на других платформах.

GDB делает большинство вещей, которые у вас есть в вашем списке пожеланий. ДДД ставит перед ними более приятный фронт. Например, переключение потоков стало проще. Установить точки останова так же просто, как и следовало ожидать.

Вы также получаете окно Cli в случае, если есть что-то непонятное, что вы хотите сделать.

Одна особенность DDD, которая выделяется над любым другим отладчиком, который я использовал, - это графическое представление данных. Это позволяет отображать и упорядочивать структуры, объекты и память в виде перетаскиваемых блоков. Двойной щелчок по указателю откроет разыменованные данные с визуальными ссылками на родительский элемент.

Эндрю Эджкомб
источник
Работает ли DDD на программах с аргументами? Я не мог заставить его передать аргументы ...
user3236841
Если я правильно помню, DDD может дать вам окно консоли прямо в GDB. В консоли GDB вы можете установить аргументы командной строки, используя команду "set args xyz abc".
Эндрю Эджкомб
5

Qt Creator-on-Linux в настоящее время, безусловно, наравне с Visual Studio-on-Windows для C ++. Я бы даже сказал лучше на стороне отладчика.

Марв
источник
5

В этом списке отсутствует одна IDE, которая очень эффективна (я использовал ее во многих проектах C / C ++ без каких-либо проблем): Netbeans .

Флоран
источник
Я очень предпочитаю cgdb теперь, когда я привык к этому, но Netbeans был таким отличным шагом от VS.
zzxyz
3

То, через что можно пройти, будет в значительной степени ограничено отладочной информацией, создаваемой g ++. Emacs предоставляет интерфейс для GDB, который позволяет вам управлять им через панели инструментов / меню и отображать данные в отдельных окнах, а также напрямую вводить команды GDB. Eclipse CDT предоставляет аналогичные инструменты. Я слышал об Anjuta и Code :: Blocks, но никогда не использовал их.

Аллен
источник
3

Как кто-то, знакомый с Visual Studio, я рассмотрел несколько IDE с открытым исходным кодом, чтобы заменить его, и KDevelop наиболее близок к IMO, так как человек, работающий с Visual C ++, может просто сесть и начать использовать. Когда вы запускаете проект в режиме отладки, он использует gdb, но kdevelop в значительной степени обрабатывает все это, так что вам не нужно знать, что это gdb; Вы просто один шаг или присваиваете часы переменным.

К сожалению, он все еще не так хорош, как отладчик Visual Studio.


источник
3

Вы не упоминаете, используете ли вы Windows или UNIX.

В системах UNIX KDevelop хорош, но я использую KDbg, потому что он прост в использовании и будет работать с приложениями, не разработанными в KDevelop.

Затмение хорошо на обеих платформах.

В Windows есть отличный пакет под названием Wascana Desktop Developer, который представляет собой Eclipse CDT и MinGW, все они упакованы и предварительно настроены для минимальной боли. Это лучшее, что я нашел для разработки кода GNU в Windows.

Я использовал все эти отладчики, и ни один из них не так хорош, как MS Dev Studio. Eclipse / Wascana, вероятно, ближе всего, но у него есть ограничения, например, вы не можете войти в библиотеки DLL, и он не так хорош при изучении переменных.

Адам Пирс
источник
3

Вы когда-нибудь смотрели на отладчик DS-5 ?

Существует платная версия, которая включает в себя множество полезных функций, но вы также можете использовать Community Edition бесплатно (что также весьма полезно, особенно для встраиваемых систем).

У меня есть положительный опыт использования этого инструмента при отладке приложений Android на реальном устройстве с помощью Eclipse.

Виктор Малый
источник
2

Код: Blocks C ++ IDE имеет графическую оболочку, с несколько особенностей , которые вы хотите, но ничего , как власти VS.

Crobar
источник
2

VisualGDB - это еще один плагин Visual Studio для разработки и отладки приложений на Linux и встроенных платформах.

Сергей Жуков
источник
1

KDevelop работает довольно хорошо.

Гарольд Экстрем
источник
1

Вы пробовали GDB-W с Cygwin GDB. Предполагается иметь интерфейс Windows, который работает довольно хорошо.

Единственная проблема, которую я обнаружил, заключается в том, что на моей нынешней машине она не работала до тех пор, пока я не установил DDD. Я подозреваю, что это требует tcltk, который был установлен, когда я установил DDD.

BubbaT
источник
0

Последняя версия Geany поддерживает ее (но только в Linux)

Милан Бабушков
источник
0

Если вы ищете GDB в Visual Studio, то проверьте WinGDB .

Dominic.wig
источник
0

В последние 15 месяцев я использую понимание (пришел с FC6). Это не здорово, написано на Tcl / Tk, но просто и полезно. DDD имеет аналогичное качество / полезность, но несколько сложнее в использовании (различные ошибки и упущения в GUI). Я также попытался интегрировать GDB с моей IDE, SlickEdit. Он работал нормально (я играл с ним около 4 часов), но мне не нравились переключатели контекста GUI. Мне нравится, что моя IDE остается неизменной во время отладки; в Windows я использую SlickEdit для IDE и Visual Studio Debugger для отладки. Итак, из 3: Insight, DDD и SlickEdit, Insight - мой первый выбор, я использую его> 95% времени, gdb из командной строки и DDD составляют остальные 5%. Если я получу шанс, я когда-нибудь оценю Eclipse, у моего рабочего компьютера недостаточно оперативной памяти (только 1 ГБ), чтобы запустить Eclipse достаточно хорошо.

Я также слышал много похвал за TotalView, в том числе из первых рук во время собеседования. Я получил eval для нашей компании в конце 2008 года, но в итоге мы не сделали этого, так как GDB был достаточно хорош для наших нужд; и это бесплатно и вездесуще.

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

Используйте www.zero-bugs.com/ Нулевой отладчик, он требует поддержки C ++ 0x от gcc

siddhusingh
источник
1
www.zero-bugs.com/ сайт не работает
vharron
0

Я искал отладчик, чтобы пройти через работающую программу. Скажи: прикрепить. Программа была построена с помощью Eclipse, но, возможно, из-за некоторых многопоточных препятствий, исходных файлов там не было. Без разницы.

Мне стало очень удобно с NetBeans.

  • [отладка] из меню -> Присоединить отладчик ...
  • как процесс выбрал тот, который нужно отладить
  • как проект [новый проект]

Теперь окно не открывается, и вы ничего не видите. оторваться от процесса. Чтение площади "Стоп" помогает.

  • импортировать источник из проекта, например, в папку. »... / MyProject / ЦСИ
  • Теперь он появляется в вашем проекте, и вы можете установить точки останова.
  • снова тч отладчик
  • выбрал процесс для отладки.
  • отладчик должен остановиться, если программа достигает следующей точки останова.

Переход к [window] -> [Debugging] -> сделает ваше окно удобным.

Cutton Eye
источник