Как скомпилировать emacs с отладочными символами?


9

У меня возникают проблемы при просмотре исходного кода emacs в gdb. Я думаю, что мне не хватает отладочных символов.

Следуя предложению https://stackoverflow.com/a/4298982/2752242 , я попытался:

./configure CFLAGS="-ggdb3 -O0" CXXFLAGS="-ggdb3 -O0" LDFLAGS="-ggdb3" --with-gif=no --prefix=$HOME/local/apps/emacs-24.4/

Но это не сработало.

Есть ли инструкции по компиляции с отладочными символами? Спасибо!


Вот как я это строю, если мне нужно отладить CFLAGS='-O0 -ggdb -g3' ./configure --enable-checking --enable-asserts. Я не профессионал, но я не уверен, что вы можете аргументировать, configureкак вы это сделали. Обычно они приходят перед вызовом программы, и configure берет их из среды, с которой она
вызывается

1
Проходя через аргументы рекомендуется в руководстве: gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.69/...
npostavs

Ответы:


4

Мне удалось получить номера строк в GDB, если я запустил emacsclientдвоичный файл, который создается make, который живет в emacs/lib-src. Если я делаю make installи пытаюсь подключить отладчик к установленному бинарному файлу, никаких номеров строк.

Вот что сработало для меня:

$ CFLAGS="-ggdb3 -O0" CXXFLAGS="-ggdb3 -O0" LDFLAGS="-ggdb3" ./configure --enable-checking --with-gif=no --prefix=$HOME/local/apps/emacs-24.4/
$ make
$ gdb lib-src/emacsclient

Это не работает:

$ CFLAGS="-ggdb3 -O0" CXXFLAGS="-ggdb3 -O0" LDFLAGS="-ggdb3" ./configure --enable-checking --with-gif=no --prefix=$HOME/local/apps/emacs-24.4/
$ make
$ make install
$ gdb $HOME/local/apps/emacs-24.4/bin/emacsclient

3
Вполне возможно, что на этапе установки запускается утилита, которая удаляет символы отладки.
Васамаса

Почему вы передаете -O0?
Генрих Хартманн

-O0 отключает оптимизацию. Оптимизации портят вашу способность проходить по коду, так как больше нет отображения между скомпилированным кодом и исходным файлом.
августа
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.