как я могу использовать eclipse для отладки скрипта, сгенерированного libtool?

У меня есть большой проект С++, созданный с помощью libtool. проблема в том, что eclipse не запускает скрипт, сгенерированный libtool, и я получаю сообщение «Программа не является распознанным исполняемым файлом». сообщение об ошибке. как я могу использовать отладчик eclipse? В настоящее время я использую kdevelop3 в качестве редактора и отлаживаю с пониманием ... что ужасно.

Возможно, я мог бы запустить фактический исполняемый файл, который находится в ./libs каталога проекта, но тогда мне пришлось бы вручную устанавливать LD_LIBRARY_PATH и тому подобное... должен быть лучший способ для этого.

любая помощь будет оценена!


person WeaselFox    schedule 16.11.2011    source источник
comment
ОБНОВЛЕНИЕ: ну, в конце концов, у меня нет другого варианта, кроме как вручную установить все переменные среды (LD_LIBRARY_PATH и т. д.). это, конечно, плохая практика, так как со временем они могут измениться, но я не нашел другого пути.   -  person WeaselFox    schedule 04.12.2011


Ответы (5)


Запуск сценария вместо исполняемого файла по-прежнему не поддерживается в Eclipse, см. эту ошибку. Пока эта функция не будет введена, вы не сможете отлаживать проект с поддержкой libtool в Eclipse, если не сохраните что-то вроде

    path/to/configure --disable-shared

отдельная конфигурация, таким образом, полагаясь на статическую компоновку только в целях отладки.

Для этого вы

  1. Откройте Project|Properties из верхнего меню.

  2. Выберите Autotools|Configure Settings в левом меню окна.

  3. (Необязательно) Создайте новую конфигурацию сборки с выделенным C/C++ Build|Builder Settings|Build location

  4. Под configure|Advanced заполните «Дополнительные параметры командной строки» --disable-shared

person Luca Geretti    schedule 21.04.2012
comment
Спасибо, но тогда мне все равно пришлось бы самому указывать пути к библиотекам, не так ли? - person WeaselFox; 22.04.2012
comment
Нет, вы бы не стали, так как они статически связаны. Конечно, есть и другие недостатки: каждый раз, когда вы меняете библиотеку, вам нужно перекомпилировать исполняемые файлы; кроме того, исполняемые файлы довольно раздуты. - person Luca Geretti; 22.04.2012
comment
Поражение одной из целей наличия libtool в первую очередь. +1 за рабочее решение. - person Plamen; 06.02.2014

Вы можете обойти это, запустив фактический исполняемый файл вместо сценария libtool. Исполняемый файл обычно находится в .libs/. Итак, в вашей конфигурации отладки на главной вкладке установите значение C/C++ Application на что-то вроде .libs/my_application. Тогда все, что вам нужно сделать, это обновить LD_LIBRARY_PATH в вашей конфигурации отладки.

Перейдите на вкладку среды вашей конфигурации отладки и создайте новую переменную среды с именем LD_LIBRARY_PATH. Вы захотите добавить каталог .libs к пути. Таким образом, значение должно выглядеть так: ${project_loc}/.libs:$LD_LIBRARY_PATH при условии, что ваша папка .libs находится прямо внутри каталога проекта.

person Kevin Kreiser    schedule 09.02.2017

Я думаю, что можно было бы написать небольшую программу-оболочку, чтобы вставить исполняемый файл «sh libtool --mode execute» для запуска gdb. Назовите его «gdb-libtool» и вызовите его вместо gdb.

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

Есть несколько хитрых моментов, таких как правильное указание путей при вызове libtool и gdb.. чтобы попробовать это.

Привет, Джерри.

person Jerry Hicks    schedule 08.01.2012
comment
Нет : Error creating session Cannot run program "gdb-libtool": Unknown reason – - person WeaselFox; 09.01.2012

Во-первых, вы можете отключить промежуточный скрипт libtool, добавив -no-install к LDFLAGS в вашем Makefile.am ИЛИ вы можете просто запустить make install и выполнить отладку из установленного двоичного файла.

Что касается второго пункта, вам нужно будет установить и экспортировать LD_LIBRARY_PATH перед запуском eclipse.

person URaoul    schedule 14.02.2014

Вам нужно убедить eclipse запустить gdb следующим образом:

$ libtool --mode=execute gdb <your-program>

См. https://www.gnu.org/s/libtool/manual/html_node/Debugging-executables.html

person Christian Rössel    schedule 09.12.2011
comment
Да, конечно, но как? Я пробовал много вещей, включая изменение командной строки отладчика, но безрезультатно. - person WeaselFox; 11.12.2011