Wie kompiliere ich Emacs mit Debug-Symbolen?

9

Ich habe Probleme beim Durchlaufen des Emacs-Quellcodes in GDB. Ich glaube, ich vermisse Debug-Symbole.

Auf Vorschlag von https://stackoverflow.com/a/4298982/2752242 habe ich Folgendes versucht:

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

Aber das hat nicht funktioniert.

Gibt es Anweisungen zum Kompilieren mit Debug-Symbolen? Vielen Dank!

jobevers
quelle
So baue ich es, wenn ich debuggen muss : CFLAGS='-O0 -ggdb -g3' ./configure --enable-checking --enable-asserts. Ich bin kein Profi, aber ich bin mir nicht sicher, ob Sie Argumente dafür liefern können, configurewie Sie es getan haben. Normalerweise kommen diese, bevor das Programm aufgerufen wird, und configure übernimmt die Umgebung, mit der es aufgerufen wird, aber vielleicht ist es etwas Neues ...
wvxvw
1
Das Übergeben von Argumenten wird im Handbuch empfohlen: gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.69/…
npostavs

Antworten:

4

Ich konnte Zeilennummern in gdb erhalten, wenn ich die emacsclientBinärdatei ausführe , die von make erzeugt wird, in der lebt emacs/lib-src. Wenn ich make installversuche, einen Debugger an die installierte Binärdatei anzuhängen, keine Zeilennummern.

Das hat bei mir funktioniert:

$ 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

Das funktioniert nicht:

$ 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
jobevers
quelle
3
Könnte sehr gut sein, dass der Installationsschritt ein Dienstprogramm aufruft, das die Debug-Symbole entfernt.
Wasamasa
Warum passierst du -O0?
Heinrich Hartmann
-O0 deaktiviert Optimierungen. Optimierungen beeinträchtigen Ihre Fähigkeit, den Code zu durchlaufen, da keine Zuordnung mehr zwischen dem kompilierten Code und der Quelldatei besteht.
Jobevers