Як компілювати 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те, як ви це зробили. Зазвичай ті приходять перед тим, як викликати програму, і конфігурація приймає ті, з оточення, з якими вона викликається, але, можливо, це щось нове ...
wvxvw

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
Можливо, що етап встановлення викликає утиліту, яка знімає символи налагодження.
wasamasa

Чому ви проходите -O0?
Генріх Хартманн

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