Создание отладочных сборок кода Ocaml с помощью Jbuilder

Я читал руководства по языку Ocaml и Jbuilder. В официальном руководстве указано, что необходимо компилировать код Ocaml с помощью '-g' flag с помощью ocamlc, чтобы затем запустить ocamldebug.

Я не могу найти упоминания об отладочных сборках в документации Jbuilder. Единственный раздел, который кажется близким, - это https://jbuilder.readthedocs.io/en/latest/jbuild.html#ocaml-flags. Однако, даже если я добавлю '-g' в качестве флага компиляции ..

(executable
 ((name [REDACTED])
  (public_name [REDACTED])
  (libraries ([REDACTED]))
  (flags (:standard -w -9+27-30-32-40@8
                    -safe-string
                    -linkall
                    -g))
  (modules ([REDACTED]))))

.. Мне все еще кажется, что двоичный файл отладки не появляется:

$ ocamldebug [REDACTED] 
    OCaml Debugger version 4.04.2

(ocd) r
Loading program... [REDACTED] is not a bytecode file.

Я делаю что-то неправильно? Если нет, то каков рекомендуемый способ создания отладочных сборок из jbuilder?


person Vishakh    schedule 06.12.2017    source источник


Ответы (1)


ocamldebug работает только со сборками байт-кода. Вы создаете собственный код. Чтобы создать сборку байт-кода, вы можете вызвать jbuilder, используя prog.bc вместо prog.exe.

Обратите внимание, что это может быть не то, что вам нужно: вы также можете отлаживать собственные программы, используя старый добрый gdb, но вам нужно быть немного знакомым со средой выполнения.

person Étienne Millon    schedule 06.12.2017
comment
Прочитав документацию, я добавил это в файл jbuild: (mode (byte)) После этого были созданы файлы .bc и, похоже, ocamldebug заработал. Это правильный метод создания байт-кода или есть лучший способ? - person Vishakh; 07.12.2017
comment
Я думаю, что (modes (bytes)) влияет только на то, что построено по умолчанию, но вы всегда можете запустить jbuild build prog.bc. - person Étienne Millon; 07.12.2017