我正在通過FFI導入Haskell中的一些東西,並希望能夠用lldb調試它們。例如,我可能有以下哈斯克爾文件(test.hs):Haskell:通過FFI導入調試C函數
main = do
foo
return()
foreign import ccall "foo" foo :: IO()
而下面的C文件(ctest.c):
#include <stdio.h>
void foo(){
printf("test\n");
}
然後我可以ghc test.hs ctest.c
編譯此。如果我運行通過LLDB可執行文件,我可以在foo
設置斷點,但是,它給了我唯一的彙編代碼,如:
test`foo: ->
0x1000019e0 <+0>: pushq %rbp
0x1000019e1 <+1>: movq %rsp, %rbp
0x1000019e4 <+4>: subq $0x10, %rsp
0x1000019e8 <+8>: leaq 0x33eb31(%rip), %rdi ; "test\n"
有沒有辦法告訴GHC編譯C文件我通過FFI與-g
導入,以便我可以獲得調試符號?
你看過[這裏](https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/options-phases.html#forcing-options-through)嗎? optc可能是你正在尋找的。 – crockeea
這正是我正在尋找的。謝謝!如果你想把這個問題轉化爲答案,我會很樂意接受它。 – Matt