gpt4 book ai didi

debugging - Haskell:调试通过 FFI 导入的 C 函数

转载 作者:行者123 更新时间:2023-12-03 08:28:15 27 4
gpt4 key购买 nike

我正在通过 FFI 在 Haskell 中导入一些东西,并希望能够使用 lldb 调试它们。例如,我可能有以下 Haskell 文件 (test.hs):

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 使用 -g 编译我通过 FFI 导入的 C 文件,以便我可以获得调试符号?

最佳答案

GHC 提供了一个接口(interface)来将选项传递给许多内部组件,包括 C 编译器。您正在寻找的选项是 optc

例如,您可以编写 ghc -optc -g Main

您可以看到所有类似选项的列表here .

关于debugging - Haskell:调试通过 FFI 导入的 C 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31524315/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com