2017-11-17 29 views
5

스택을 사용하여 정적으로 연결된 바이너리를 빌드 중이며 디버그 기호를 추가하려고합니다 (다음 : https://downloads.haskell.org/~ghc/master/users-guide/debug-info.html). 그러나 GDB보고 : no debugging symbols found.정적으로 링크 된 바이너리의 디버그 기호가 누락되었습니다.

무엇이 누락 되었습니까? -g -rtsoptsld-options에 : -static

나는 .cabal fileghc-options에 추가했습니다.

GDB과 같이 호출
stack install \ 
    --install-ghc \ 
    --split-objs \ 
    --ghc-options="-fPIC -fllvm -pgmlo opt -pgmlc llc" 

은 다음과 같습니다 : gdb --args nodebug-exe +RTS -V0

GHC를 8.2.1

전체 소스 코드는 여기에 있습니다 : 나는 다음과 같은 명령을 사용하여 스택을 사용하여 건물입니다 https://github.com/carbolymer/haskell-missing-debug-symbols

+1

아마도 --no-strip을 추가할까요? '--no-strip : 모든 표현식에 대해 라이브러리, 실행 파일 등에서 DWARF 디버깅 심볼 제거 사용 안 함 ' – Zpalmtree

+0

@Zpalmtree, 맞습니다. 나는'stack install --help'을 조사해 보았어야한다 ... 대답으로 추가 할 수있다. – carbolymer

답변

5

--no-strip 디버깅 방지 정보는 스택 빌드에서 제거됩니다.

스택 이제 --no 라이브러리 스트리핑 상기 --no 스트립을 사용 DWARF 정보 디버깅 및 프로파일을 지원하고 --no 실행 스트리핑 다음 documentation 가입일

컴파일 된 라이브러리 및 실행 파일에서 이러한 정보를 제거하는 기본 동작을 비활성화하는 플래그.