Сообщения об ошибках Eclipse Luna в GDB и Valgrind, невозможность отладки или профилирования программы C++ как локального приложения C/C++

Я скачал Eclipse Luna для 64-битной Mac OS X всего несколько дней назад. Хотел бы использовать Eclipse для небольшой программы на C++, заданной в качестве домашнего задания для студентов. Настройте это как проект Eclipse C++.

Я построил выбранную конфигурацию как Debug и запустил ее как локальное приложение C/C++. Все хорошо. Моя программа на С++ запускается, и вывод отображается в окне консоли именно так, как я этого хочу.

Когда я пытаюсь Отладить как локальное приложение C/C++, появляется окно с сообщением Error with command: gdb --version. Cannot run program 'gdb': Unknown reason. Итак, я не могу запустить свою программу в перспективе отладки и выполнять пошаговое выполнение построчно, использовать точки останова, проверять назначения переменных, и т. д.

Когда я пытаюсь профилировать как локальное приложение C/C++, появляется окно с сообщением Couldn't determine version of Valgrind., поэтому я не могу выполнить автоматическое обнаружение утечки памяти.

Нужно ли мне завершать установку Eclipse каким-либо дополнительным способом, выбрав Eclipse > Help > Install New Software? Нужно ли мне выполнять какие-то дополнительные установки на моем Mac, которые не входят в структуру Eclipse? Я не вижу, чего здесь не хватает, что касается моих установок программного обеспечения.

Любая помощь, высоко ценится ..!

Свойства для MyLittleProject, редактор цепочки инструментов Текущий набор инструментов: MacOSX GCC Текущий сборщик: Gnu Make Builder Используемые инструменты MacOS X C Linker MacOS X C++ Linker GCC Assembler GCC Archiver GCC C++ Compiler GCC C Compiler

О ECLIPSE Eclipse IDE для разработчиков C/C++ Версия: Luna Release (4.4.0) Идентификатор сборки: 20140612-0600

ДЕТАЛИ ПО УСТАНОВКЕ>>УСТАНОВЛЕННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ Eclipse IDE для разработчиков C/C++ Функция EPP CPP Поддержка C/C++ Autotools Средства разработки C/C++ C/C++ Common GDB Support . . . Поддержка кросс-компилятора C/C++ GCC. . . Поддержка автономного отладчика CDT. . . Анализ точек трассировки GDB. . . Фреймворк профиля интеграции инструментов Valgrind


person user2308967    schedule 15.09.2014    source источник


Ответы (1)


Eclipse не может найти ни gdb, ни valgrind на вашем компьютере. Вы должны установить их вручную. Вы видите в разделе ДЕТАЛИ УСТАНОВКИ>>УСТАНОВЛЕННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ, что интерфейсы для этих двух программ установлены, но сами программы отсутствуют.

На Mac вы можете использовать LLDB вместо gdb.

Если вы настаиваете на использовании двух, вам нужно сначала установить их. Я не знаком с MacOS, но, возможно, следующие ссылки окажутся полезными:

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

ln -s $(which valgrind) /usr/bin/valgrind 
person jotrocken    schedule 15.09.2014
comment
У меня есть gdb, и благодаря этой веб-странице install-gdb-on-os-x-mavericks я смог использовать настройки Eclipse, чтобы указать на /usr/local/bin/gdb, и теперь моя опция отладки хороша. Я установил valgrind и убедился, что могу запустить valgrind, как и ожидалось, из интерфейса командной строки Mac OS X Unix, но я не вижу никакого способа, чтобы Eclipse указывал на /usr/local/bin/valgrind, когда я хочу valgrind моего Eclipse C или С++ проект. Итак, Eclipse/valgrind, я все еще застрял. - person user2308967; 22.09.2014
comment
Плагин Eclipse для valgrind, кажется, ищет двоичный файл valgrind по определенному пути, который не может быть настроен. Вам нужно добавить символическую ссылку. Я обновил свой ответ. - person jotrocken; 22.09.2014
comment
Не могли бы вы проверить это? Я скопировал команду из документации, но она выглядит несколько странно. Может быть, аргумент должен быть наоборот: ln -s $(which valgrind) /usr/bin/valgrind - person jotrocken; 22.09.2014
comment
Спасибо. После рассмотрения того, как описывается символическая ссылка, мне показалось, что должно быть наоборот». Итак, я ввел ln -s $(который valgrind) /usr/bin/valgrind, а затем перешел в Eclipse и выполнил профиль как локальное приложение C/C++, и ЭТО РАБОТАЕТ. Это делает valgrind для меня прямо внутри среды Eclipse. - person user2308967; 24.09.2014
comment
Спасибо, что сообщили. Я обновил свой ответ. Не могли бы вы принять ответ, чтобы другие люди, имеющие ту же проблему, могли найти это решение? - person jotrocken; 24.09.2014
comment
@jotrocken У меня такая же проблема с 64-битной версией Neon.3 (4.6.3) в Linux. Я предполагаю, что ваше исправление должно работать и для меня, но я не уверен, где именно добавить символическую ссылку ln -s $(what valgrind) /usr/bin/valgrind Не могли бы вы уточнить? - person BJPrim; 04.05.2017
comment
@BJPrim Конечно: ln -s TARGET LINK_NAME ссылается TARGET на позицию LINK_NAME. Когда я писал ответ, Eclipse искал valgrind по адресу /usr/bin/valgrind. Однако двоичный файл valgrind может быть расположен в другом каталоге, который вы получаете с помощью which valgrind (при условии, что valgrind установлен). Синтаксис $(COMMAND) выполняет команду и помещает вывод во внешний оператор. Если Eclipse Neon по-прежнему имеет те же настройки, что и двоичный файл valgrind, приведенная выше команда все еще должна быть в порядке. Это помогает? - person jotrocken; 04.05.2017