How can ocamldebug be used with a Batteries Included project?
Asked Answered
L

1

7

I have a simple ocamlbuild project which uses Batteries, including syntax extensions.

_tags:

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

something.ml:

open Batteries
…
let () = …

It is built for debugging with:

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

Attempting to use the print command in ocamldebug, however, gives the following error:

(ocd) print x
Cannot find module Batteries.

This only seems to occur when debugging in a scope where Batteries is opened.

What is the cause of this error? How is it possible to work around?

Lancer answered 2/6, 2011 at 18:53 Comment(0)
D
8

You have to make the Batteries includes available to the debugger; the dir command and the -I command line options enable this. Unfortunately, this is harder than it should be because ocamlfind does not support ocamldebug. But you can do this:

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

This will pass a sequence of -I options to ocamldebug to provide the include paths to locate the relevant modules.

Duvall answered 3/6, 2011 at 1:39 Comment(1)
Indeed, the first thing I did was check ocamlfind for its ability to invoke ocamldebug and came up short. I figured there was something along these lines. Thanks. Will confirm, and accept once I have.Lancer

© 2022 - 2024 — McMap. All rights reserved.