我正在使用堆栈构建静态链接二进制文件,我尝试向其添加调试符号(以下:https://downloads.haskell.org/~ghc/master/users-guide/debug-info.html)。但GDB报告:no debugging symbols found
。
我错过了什么?
我已添加到.cabal
file:ghc-options
中的-g -rtsopts
和ld-options
:-static
。我正在使用以下命令构建堆栈:
stack install \
--install-ghc \
--split-objs \
--ghc-options="-fPIC -fllvm -pgmlo opt -pgmlc llc"
调用GDB如下:gdb --args nodebug-exe +RTS -V0
GHC 8.2.1
整个源代码在这里:https://github.com/carbolymer/haskell-missing-debug-symbols
答案 0 :(得分:6)
--no-strip
可防止在堆栈构建中删除调试信息。
stack现在支持使用DWARF信息进行调试和分析, 使用--no-strip, - no-library-stripping,和 --no-executable-stripping标志,用于禁用从已编译的库和可执行文件中删除此类信息的默认行为。