关于 ocaml:在 opam 包中启用调试

Enable debugging in opam packages

对于一个学校项目,我正在使用 Jane Street 的 Core 和 Async 库。我正在尝试调试 bind Unix 系统调用的问题,所以我运行 ocamldebug myprogram。这会在引发异常 (Unix.Unix_error) 时停止,但在后退时我会收到以下消息:

1
No source file for Async_parallel.Master_process.

这是引发错误的文件。是否可以指定 opam 使用调试信息构建我安装的软件包,以便我可以使用 ocamldebug 来检查它们?否则,我还能做些什么来解决这个问题?

提前致谢!


从 4.01 开始,ocaml 编译器将使用 OCAMLPARAM 环境变量来启用某些选项。尝试使用 OCAMLPARAM="_,g" opam install ... 运行。另请参阅 https://github.com/ocaml/opam/issues/681

另一方面,使用 strace -e bind -f -ttT ./myprogram 可以更轻松有效地调试此类问题。还有 Unix_error 带有错误的原因,不要忽视它。