Como compilar o emacs com símbolos de depuração?


9

Estou tendo problemas para percorrer o código-fonte do emacs em gdb. Acho que estou faltando símbolos de depuração.

Seguindo uma sugestão de https://stackoverflow.com/a/4298982/2752242 , tentei:

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

Mas isso não funcionou.

Existem instruções para compilar com símbolos de depuração? Obrigado!


Isto é como eu estou construindo-lo, se eu precisar de depuração: CFLAGS='-O0 -ggdb -g3' ./configure --enable-checking --enable-asserts. Não sou profissional, mas não tenho certeza de que você possa argumentar sobre configureo modo como fez. Normalmente, aqueles vêm antes de chamar o programa, e configure leva os do ambiente é chamado com, mas talvez seja algo novo ...
wvxvw

11
A passagem de argumentos é recomendada no manual: gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.69/…
npostavs

Respostas:


4

Eu era capaz de obter números de linha em gdb se eu executasse o emacsclientbinário produzido pelo make que mora emacs/lib-src. Se eu fizer make installe tentar anexar um depurador ao binário instalado, não haverá números de linha.

Isto é o que funcionou para mim:

$ 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

Isso não funciona:

$ 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
Pode muito bem ser que a etapa de instalação invoque um utilitário que retire os símbolos de depuração.
wasamasa

Por que você passa -O0?
Heinrich Hartmann

-O0 desativa otimizações. As otimizações atrapalham sua capacidade de percorrer o código, pois não há mais um mapeamento entre o código compilado e o arquivo de origem.
jobevers
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.