В моей отладочной сборке под Linux GCC отсутствует информация о символах для некоторых из них

Я разработал проект C на Github, который использует autotools. Собрав его с опциями отладки, следуя посту Уильяма Перселла, я не могу войти в некоторые функции. Отладчик говорит: " нет отладочной информации ".

Вот мой процесс сборки:

$ ./autogen.sh
$ mkdir Debug
$ cd Debug
$ ../configure --prefix=/Debug CPPFLAGS=-DDEBUG CFLAGS="-O0 -g3 -Wall"
$ make
$ make check

Для информации, дерево исходников имеет два уровня папок: perfo/, src/, src/core/, src/utils/, tests/ и т. Д.

Когда я отлаживаю tests/xxx, у меня есть символы для функций в tests/xxx.c, но не те, которые находятся внутри src / core / global.c, например.

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

$ readelf -WS tests/reqrep.o | grep debug_info
  [ 6] .debug_info       PROGBITS        0000000000000000 00118a 000735 00      0   0  1
  [ 7] .rela.debug_info  RELA            0000000000000000 00d5d0 000d20 18     25   6  8
$ readelf -WS src/core/global.o | grep debug_info
  [ 6] .debug_info       PROGBITS        0000000000000000 002d87 002360 00      0   0  1
  [ 7] .rela.debug_info  RELA            0000000000000000 01ccb8 003180 18     25   6  8

Я отлаживаю с Eclipse CDT. Профиль сборки отладки идентичен. Например, если я перестраиваю с нуля через консоль, Eclipse CDT не перестраивается при отладке, потому что он обновлен. Конечно, я попытался отладить как сборку консоли, так и сборку Eclipse. Конфигурация отладки выглядит хорошо: application = Debug/tests/.libs/reqrep, использование GDB (DSF) в режиме без остановки, конфигурация сборки - отладка, исходный путь поиска по умолчанию.

Любая идея, пожалуйста?

1 ответ

Решение

Как объяснил nm, решение состоит в том, чтобы добавить переменную среды LD_LIBRARY_PATH в конфигурацию отладки, указав путь, по которому создается библиотека.

введите описание изображения здесь

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