使用Jbuilder创建Ocaml代码的调试版本
我一直在阅读Ocaml语言和Jbuilder的教程。官方教程指出,要运行ocamldebug,必须先使用ocamlc 我在Jbuilder文档中找不到任何关于调试构建的内容。唯一看起来很接近的部分是。但是,即使我添加了'-g'作为编译标志使用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
(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
。