Я разветвил проект C на Github, который использует автоинструменты. После создания его с параметрами отладки, следуя сообщению Уильяма Перселла, я не могу войти в некоторые функции. Отладчик говорит: "нет отладочной информации".
Вот мой процесс сборки:
$ ./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/ и т. д.
Когда я отлаживаю тесты/xxx, у меня есть символы для функций в тестах/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. Конфигурация отладки выглядит нормально: приложение = Debug/tests/.libs/reqrep, использование GDB (DSF) с непрерывным режимом, конфигурация сборки — отладка, путь поиска исходного кода — по умолчанию.
Любая идея, пожалуйста?
-g3
? - person n. 1.8e9-where's-my-share m.   schedule 14.01.2014$ grep "gcc -std=gnu99" xxx.build.log | wc -l
196$ grep "gcc -std=gnu99" xxx.build.log | grep g3 | wc -l
195$ grep "gcc -std=gnu99" xxx.build.log | grep -v g3
libtool: ссылка: gcc -std=gnu99 -shared -fPIC -DPIC ...etc... - person lalebarde   schedule 14.01.2014/home/laurent/Documents/WorkSpace/xxx/Debug/tests/.libs/test1: error while loading shared libraries: libxxx.so.0: cannot open shared object file: No such file or directory
- person lalebarde   schedule 15.01.2014-rpath
и другие), но я не рекомендую использовать их для указания внутри вашего дерева проекта. Вместо этого используйте переменную средыLD_LIBRARY_PATH
. Используйте-rpath
, чтобы указать конечную папку установки, если она отличается от папки по умолчанию. - person n. 1.8e9-where's-my-share m.   schedule 15.01.2014