В моей отладочной сборке под 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 в конфигурацию отладки, указав путь, по которому создается библиотека.