Есть ли графический интерфейс C++ gdb для Linux?

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

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

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

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

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

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

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

+1 за «Такие сайты великолепны, потому что вы можете получить представление о личном опыте людей». В настоящее время слишком много людей просто делают дамп списка, который, ИМХО, полностью упускает из виду.

kizzx2 11.06.2010 17:43

По обратному проектированию: reverseengineering.stackexchange.com/questions/1392/…

Ciro Santilli TRUMP BAN IS BAD 10.07.2015 11:31

См. Этот список интерфейсов gdb здесь: sourceware.org/gdb/wiki/GDB%20Front%20Ends, и попробуйте первый в списке. Выглядит очень многообещающе и современно и является кроссплатформенным, поскольку основан на браузере: gdbgui.com.

Gabriel Staples 23.06.2020 21:59
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
212
4
110 459
28
Перейти к ответу Данный вопрос помечен как решенный

Ответы 28

Ответ принят как подходящий

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

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

gdb, работающий под управлением emacs, очень хорош и не требует чистой мощности. Однако для этого требуются навыки работы с emacs. Для тех, кто уже пользуется emacs, этот ответ неверен. Для пользователей, не использующих emacsers, это, вероятно, справедливо, хотя cgdb делает кое-что, чтобы смягчить боль командной строки gdb.

John Lawrence Aspden 25.10.2011 14:49

WinDBG намного превосходит то, что предоставляет Visual Studio. Отладчик Visual Studio построен на той же архитектуре, что и WinDBG. С учетом сказанного, GDB не о чем спрашивать при сравнении с Windbg. Графический отладчик лучше, чем DDD, было бы замечательно. Eclipse CDT - хорошая альтернатива. Я думаю, был KDE UI

bigmonachus 23.02.2012 06:12

О, посмотри. Ответ, который содержит претензию без каких-либо подтверждений. Мне также кажется странным, что был принят ответ не отвечает на вопрос.

alternative 20.03.2012 02:29

для всех, кто приходит сюда в поисках реального ответа, знайте, что ddd - это мусор. Лучший графический интерфейс отладчика для Linux, который я нашел, - это IDA, которая не является бесплатным программным обеспечением.

bkconrad 07.02.2013 22:04

Ответьте на вопрос как можно лучше или ничего не говорите. Используя оба варианта, Visual Studio стала более функциональной, но DDD достаточно хорош, так что я не скучаю по VS. К сожалению, DDD показывает свой возраст.

Alan De Smet 07.02.2014 00:33

Этот пост необходимо обновить / улучшить. Qt Creator великолепен наравне с Visual Studio.

vharron 24.07.2014 07:13

Что это за DDD, о котором вы говорите?

starbeamrainbowlabs 10.11.2017 13:23

Ваш ответ довольно старый, и я уверен, что даже тогда он был неправильным. Отладчик Visual Studio довольно плох по сравнению, скажем, с eclipse + gdb.

Clearer 29.03.2018 15:48

@starbeamrainbowlabs Также известный как Data Display Debugger, старый интерфейс GNU GUI для GDB, который иногда может пригодиться, но выглядит полным дерьмом и имеет некоторые раздражающие проблемы с удобством использования. gnu.org/software/ddd

SasQ 09.03.2019 22:21

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

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

DDD - это интерфейс GNU для gdb: http://www.gnu.org/software/ddd/

KDevelop работает очень хорошо.

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

gdb -tui работает нормально, если вы хотите что-то в стиле GUI, но все же основанное на символах.

Вы также можете перейти в режим TUI (текстовый пользовательский интерфейс), находясь в gdb, используя команду '-'. Чтобы вернуться в командную строку, нажмите Ctrl-X Ctrl-A. В режиме TUI перемещение вверх, вниз, влево и вправо по источнику. Используйте Ctrl-P, Ctrl-N, Ctrl-F и Ctrl-B для навигации по истории командной строки.

Ben Combee 26.10.2008 01:10

Это именно то, что я искал. Мощь командной строки gdb с некоторыми полезными представлениями, которые обновляются по мере того, как я двигаюсь.

Kevin Cox 14.08.2014 01:19

.Gdbinit на steriods дает вам действительно впечатляющий графический интерфейс на основе символов с цветом: github.com/cyrus-and/gdb-dashboard

cs01 26.09.2016 03:16

Мне очень нравится gdb-приборная панель, но не могу не упомянуть и вольтрон.

nonsensickle 09.02.2017 13:39

@ Барри, спасибо. Для всех, кому интересно, вот ссылка: github.com/cs01/gdbgui. Он имеет отображение структуры данных, аналогичное DDD, архитектуру клиент / сервер для простой отладки удаленных машин без необходимости перенаправления X, а также возможность исследования сложных переменных и т. д.

cs01 26.10.2017 01:03

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

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

Я вообще не могу заставить DDD работать через удаленный X; просто вылетает с ошибками Xlib на моем тонком клиенте :(

Adam Hawes 02.02.2009 04:31

totalview выглядит как жизнеспособная альтернатива. Я не считаю DDD лучше интерфейса gdb curses.

deft_code 27.08.2009 06:51

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

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

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

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

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

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

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

Поддерживается чтение дампов ядра. (Он называется посмертным отладчиком.)

Josh Kelley 02.02.2009 04:24

У меня был лучший опыт отладки Eclipse CDT, чем в Visual Studios. Однако я не дал MSVC слишком много шансов.

notlesh 14.05.2013 08:48

Я думаю, что QtCreator следует упомянуть вместе с Eclipse, поскольку он сопоставим.

nonsensickle 09.02.2017 13:42

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

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

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

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

Работает ли ddd на программах с аргументами? Я не мог заставить его передать аргументы ...

user3236841 18.10.2019 21:12

Если я правильно помню, DDD может предоставить вам консольное окно прямо в GDB. В консоли GDB вы можете установить аргументы командной строки с помощью команды "set args xyz abc".

Andrew Edgecombe 29.10.2019 09:05

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

KDbg нет ограничен KDE.

Brent Bradburn 12.05.2016 17:55

Это классно. Интересно, где это было все это время.

edmz 14.06.2018 14:38

Вы пробовали использовать gdb -w с cygwin gdb. Предполагается, что интерфейс Windows работает достаточно хорошо.

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

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

GDB Emacs Frontend

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

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

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

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

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

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

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

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

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

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

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

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

cs01 26.10.2017 01:01

Сравнение с плюсами и минусами на основе опыта. Как раз то, что нужно для этого вопроса. ты

Heath Raftery 27.04.2019 10:01

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

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

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

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

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

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

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

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

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

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

Обновлять: Новая ссылка.

Абсолютнопоразительнй, also supported with apt: 'apt-get install nemiver'. My only quibble is building from repo failed due to a ' No package gconf-2.0 found'.
J Evans 05.02.2015 16:36

интерфейс довольно понятен и удобен для чтения, но иногда дает сбой при использовании возможностей интерфейса v0.9.6. Он также принимает параметры отлаженного приложения, чего я до сих пор не могу позволить ddd.

Aquarius Power 11.07.2018 19:05

Также доступно на Fedora 30 (по крайней мере). Я случайно на этот вопрос и немивер.

user3236841 18.10.2019 21:10

C++ IDE Код: блоки имеет графическую оболочку с некоторыми функциями, которые вам нужны, но ничего подобного мощи VS.

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

www.zero-bugs.com/ сайт не работает

vharron 24.07.2014 07:12

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

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

zzxyz 01.02.2018 23:16

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

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

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

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

Связь has expired. New ones здесь.
parthasarathy 14.07.2020 08:41

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

Мне очень понравилось работать с NetBeans.

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

Теперь окно закрывается, и вы ничего не видите. оторваться от процесса. Помогает Рид Сквер «Стоп».

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

Переход в [окно] -> [Отладка] -> Будет ли ваше окно удобным.

Другие вопросы по теме