我有一个使用电池的简单ocamlbuild项目,其中包括语法扩展。

_tags

<*>: pkg_batteries,pkg_threads,pkg_batteries.syntax,syntax_camlp4o


something.ml

open Batteries
…
let () = …


它是为调试而构建的:

$ ocamlbuild something.d.byte
$ ocamldebug something.d.byte


但是,尝试在print中使用ocamldebug命令会产生以下错误:

(ocd) print x
Cannot find module Batteries.


这似乎仅在Batteriesopen的作用域中进行调试时才会发生。

此错误的原因是什么?如何解决?

最佳答案

您必须使电池包含给调试器; dir命令和-I命令行选项启用此功能。不幸的是,这比应该做的难,因为ocamlfind不支持ocamldebug。但是您可以这样做:

$ ocamldebug `ocamlfind query -recursive -i-format batteries` -I _build something.d.byte


这会将一系列-I选项传递给ocamldebug,以提供用于查找相关模块的包含路径。

10-04 17:19