Jak skompilować emacsa za pomocą symboli debugowania?

9

Mam problem z przejściem przez kod źródłowy emacsa w gdb. Myślę, że brakuje mi symboli debugowania.

Zgodnie z sugestią https://stackoverflow.com/a/4298982/2752242 próbowałem:

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

Ale to nie zadziałało.

Czy istnieją instrukcje dotyczące kompilacji z symbolami debugowania? Dzięki!

osoby poszukujące pracy
źródło
W ten sposób buduję go, jeśli trzeba debug: CFLAGS='-O0 -ggdb -g3' ./configure --enable-checking --enable-asserts. Nie jestem zawodowcem, ale nie jestem pewien, czy możesz argumentować configuresposób, w jaki to zrobiłeś. Zwykle przychodzą one przed wywołaniem programu, a program config pobiera je ze środowiska, z którym jest wywoływany, ale może to coś nowego ...
wvxvw
1
Przekazywanie argumentów jest zalecane w podręczniku: gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.69/...
npostavs

Odpowiedzi:

4

Byłem w stanie uzyskać numery linii w gdb, jeśli uruchomię emacsclientplik binarny produkowany przez make, który żyje emacs/lib-src. Jeśli to zrobię make installi spróbuję dołączyć debugger do zainstalowanego pliku binarnego, brak numerów linii.

Oto, co zadziałało dla mnie:

$ 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

To nie działa:

$ 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
osoby poszukujące pracy
źródło
3
Możliwe, że krok instalacji wywoła narzędzie usuwające symbole debugowania.
wasamasa,
Dlaczego podajesz -O0?
Heinrich Hartmann
-O0 wyłącza optymalizacje. Optymalizacje zaburzają twoją zdolność przechodzenia przez kod, ponieważ nie ma już mapowania między skompilowanym kodem a plikiem źródłowym.
Jobevers