Проблема с отладкой разделяемой библиотеки в eclipse

#c #eclipse #eclipse-cdt

#c #eclipse #eclipse-cdt

Вопрос:

Мой проект состоит из нескольких разделяемых библиотек и одного исполняемого файла. Я пытался отладить свой код из разделяемой библиотеки, но отладчик никогда не останавливается на точках останова, и я получаю предупреждения для каждой точки останова: «Проблема с атрибутом точки останова: установка не удалась».. Может кто-нибудь объяснить мне эту проблему или предоставить обходной путь для меня.

Заранее спасибо.

Ответ №1:

Запускали ли вы программу (заставляя ее загружать общие библиотеки) перед попыткой установить точки останова? Если вы сделали это наоборот (установили точки останова перед запуском программы), это, скорее всего, не сработает, потому что код разделяемой библиотеки не был загружен.

Комментарии:

1. но тогда ошибка (по крайней мере, с gdb, который является отладчиком по умолчанию в cdt) была бы другой. И в любом случае, gdb предлагает запомнить точку останова и активировать ее при загрузке библиотеки

2. По моему опыту, функция активации точек останова при будущей загрузке разделяемой библиотеки работает ненадежно при отладке C в gdb. Я еще раз предлагаю вам сначала запустить программу, а затем установить точки останова. Если в Eclipse нет кнопки «пуск», отличной от той, которая запускает всю программу до завершения, вы могли бы попробовать установить точку останова в первой строке main() или напрямую использовать gdb (тогда вы бы использовали команду «пуск»).

3. Кстати, я не оператор. Я тоже предпочитаю этот способ, делайте это с помощью b main; run . Однако в Linux недостаточно запустить программу, библиотека фактически загружается при первом вызове к ней, поэтому вам нужно выполнить пошаговое выполнение программы до тех пор, пока это

Ответ №2:

не знаю, поможет ли вам это, но после некоторых усилий я отказался от отладки в eclipse и перешел на старый добрый gdb (который в любом случае является серверной частью для отладки eclipse) — это было раздражающе слишком медленно. Вы привыкаете к интерфейсу командной строки быстрее, чем ожидаете, и он быстрый, удобный, интуитивно понятный, но мощный. Мне нравится работать с пользовательским интерфейсом и IDE, но не любой ценой. gdb имеет несколько «оболочек» пользовательского интерфейса, ddd — одна из самых популярных, но они тоже не идеальны.

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