如何使用调试符号编译emacs?


9

我在遍历gdb中的emacs源代码时遇到了麻烦。我想我缺少调试符号。

根据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对您的做法提出质疑。通常,那些是在调用程序之前来的,并且configure从调用它的环境中获取它们,但是也许是新东西……
wvxvw 2014年

Answers:


4

如果运行emacsclient由make生成的二进制文件(位于),则可以在gdb中获得行号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 2014年

为什么要通过-O0?
海因里希·哈特曼

-O0禁用优化。由于编译后的代码和源文件之间不再存在映射关系,因此优化会破坏您逐步执行代码的能力。
人员
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.