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!


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

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.