디버그 기호로 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

1
인수를 통한 전달은 매뉴얼에서 권장됩니다 : gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.69/…
npostavs

답변:


4

emacsclientmake that live에 의해 생성 된 이진 파일을 실행하면 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

왜 -O0를 전달합니까?
하인리히 하트만

-O0은 최적화를 비활성화합니다. 컴파일 된 코드와 소스 파일 사이에 더 이상 매핑이 없으므로 최적화를 통해 코드를 단계별로 실행할 수 없습니다.
jobevers
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.