如何将OCaml字节码映射到其原始源代码位置?

如何将OCaml字节码映射到其原始源代码位置?,ocaml,source-maps,js-of-ocaml,Ocaml,Source Maps,Js Of Ocaml,从字节码的某个部分到它最初来自的代码行,格式或库是否有一些好的特性?这显然对调试和错误消息很有用 特别是,我正在研究添加对的支持有多困难 当编译时启用调试信息(选项-g),字节码携带所谓的“事件”结构,例如标记函数入口和返回点,提供源位置和键入信息 作为如何检查此信息的概念证明,我创建了一个工具(Benoît Vaugon提供的用于检查字节码文件的小型实用程序),它将此调试信息与字节码指令一起打印 我不知道在整个编译过程中,js\u of_ocaml是否采取了必要的步骤来保存此位置信息。您可能应

从字节码的某个部分到它最初来自的代码行,格式或库是否有一些好的特性?这显然对调试和错误消息很有用


特别是,我正在研究添加对的支持有多困难

当编译时启用调试信息(选项
-g
),字节码携带所谓的“事件”结构,例如标记函数入口和返回点,提供源位置和键入信息

作为如何检查此信息的概念证明,我创建了一个工具(Benoît Vaugon提供的用于检查字节码文件的小型实用程序),它将此调试信息与字节码指令一起打印


我不知道在整个编译过程中,
js\u of_ocaml
是否采取了必要的步骤来保存此位置信息。您可能应该联系维护人员Jérôme Vouillon,询问更多信息。

js_of_ocaml-debuginfo
使用字节码中的
debug_事件来编写注释中的代码行。

关于
js_of_ocaml
您提到的是与回溯相关的吗?因为我试图通过回溯实现
\uuuuu FILE\uuuuuu
\uuuuu LINE\uuuuuuu
,但在ocaml的
js\u中它不起作用,不得不求助于非常难看的脚本。是的,我相信事件结构也是用来报告位置信息的异常回溯。但我认为它们的存在与ocaml的js运行时是否正确实现回溯是正交的。在任何情况下,我都是在修改ocaml的js_编译器的
js_的上下文中理解这个问题的,而不是使用现在可用的编译器。对于
\uuuuuuuuuuuuuuuuuuuuuuuuuuu文件
\uuuuuuuuuu线
,我想今天最方便的解决方案是使用Camlp4(或
-ppx
)。太棒了。一个重要的注意事项是:我必须使用带有
ocamlc
-g
标志来获取字节码中的调试输出,然后再通过
js\u of\u ocaml
运行它。我花了一段时间才弄明白这一点,没有它,在生成的js中就不会有任何评论。