Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Jbuilder创建Ocaml代码的调试版本_Ocaml_Ocamldebug_Ocaml Dune - Fatal编程技术网

使用Jbuilder创建Ocaml代码的调试版本

使用Jbuilder创建Ocaml代码的调试版本,ocaml,ocamldebug,ocaml-dune,Ocaml,Ocamldebug,Ocaml Dune,我一直在阅读Ocaml语言和Jbuilder的教程。官方教程指出,要运行ocamldebug,必须先使用ocamlc 我在Jbuilder文档中找不到任何关于调试构建的内容。唯一看起来很接近的部分是。但是,即使我添加了'-g'作为编译标志 (executable ((name [REDACTED]) (public_name [REDACTED]) (libraries ([REDACTED])) (flags (:standard -w -9+27-30-32-40@8

我一直在阅读Ocaml语言和Jbuilder的教程。官方教程指出,要运行ocamldebug,必须先使用ocamlc

我在Jbuilder文档中找不到任何关于调试构建的内容。唯一看起来很接近的部分是。但是,即使我添加了'-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生成调试版本的推荐方法是什么?

ocamldebug
仅适用于字节码版本。您正在生成本机代码。要创建字节码生成,可以使用
prog.bc
而不是
prog.exe
调用
jbuilder


请注意,这可能不是您想要的:您也可以使用普通的old
gdb
调试本机程序,但您需要对运行时稍有熟悉。

阅读文档后,我将此添加到jbuild文件:(modes(byte)),之后生成了.bc文件,ocamldebug似乎可以工作。这是生成字节码的正确方法还是有更好的方法?我认为
(模式(字节))
只影响默认生成的内容,但您始终可以运行
jbuild build prog.bc