Debugging Ocamldebug:与进程的连接丢失

Debugging Ocamldebug:与进程的连接丢失,debugging,segmentation-fault,ocaml,Debugging,Segmentation Fault,Ocaml,我最近切换到OCAML4.03.0(使用Opam安装),并开始在以前没有任何问题的示例中看到来自ocamldebug的不稳定行为 具体来说,我将字节码加载到ocamldebug中,设置参数并运行它。我没有设置任何断点,我只是希望调试器遇到一个断言失败,字节码(调试器外部)和本机代码都会遇到。运行一段时间后,ocamldebug停止运行,而不是到达断言 Lost connection to process 1234 (active process) between time x and y.

我最近切换到OCAML4.03.0(使用Opam安装),并开始在以前没有任何问题的示例中看到来自ocamldebug的不稳定行为

具体来说,我将字节码加载到ocamldebug中,设置参数并运行它。我没有设置任何断点,我只是希望调试器遇到一个断言失败,字节码(调试器外部)和本机代码都会遇到。运行一段时间后,ocamldebug停止运行,而不是到达断言

Lost connection to process  1234 (active process) 
between time x and y.   
Segmentation fault (core dumped). 
Restart from time z to get closer of the problem? (y or n)".
如果我试图通过说“n”来接近问题,然后再次运行,这个问题会不断重复

除了对代码的微小更改(如附加的打印语句),我的设置中除了Ocaml版本外没有任何更改。我的一个合作者也有这个问题,Ocaml 3.12.0(从源代码安装)和4.03.0(从Opam安装)都有这个问题


为什么会这样?这有解决办法吗?任何对此的洞察都将不胜感激。谢谢

对这种行为的一种可能解释是,您的代码实际上是分段错误。如果您的纯OCaml没有不安全的构造,那么任何SEGFULT都是一个实现错误(在OCaml本身中)。不过,OCaml实现到目前为止已经相当成熟了。那么,您是否有其他语言中的不安全构造或外部代码?另一方面,你可以试着说“y”而不是“n”,也许你可以找到它发生的地方。最后,如果你能展示一个完整的例子,这将非常有帮助。正如我所说的,字节码和本机代码seg都没有错误。他们得到了我提出的主张。只有调试器存在此问题。我已经在几个地方使用了命令式代码,但没有我能想到的不安全的构造。举个例子,这是一个庞大的代码库,很难分离出一个代码段。如果没有重现问题的方法,您实际上是在问这是否是一个已知的问题。我在上查看了错误报告,没有看到任何东西,但其他人会知道的比我多得多。对这种行为的一种可能解释是,您的代码实际上是分段错误。如果您的纯OCaml没有不安全的构造,那么任何SEGFULT都是一个实现错误(在OCaml本身中)。不过,OCaml实现到目前为止已经相当成熟了。那么,您是否有其他语言中的不安全构造或外部代码?另一方面,你可以试着说“y”而不是“n”,也许你可以找到它发生的地方。最后,如果你能展示一个完整的例子,这将非常有帮助。正如我所说的,字节码和本机代码seg都没有错误。他们得到了我提出的主张。只有调试器存在此问题。我已经在几个地方使用了命令式代码,但没有我能想到的不安全的构造。举个例子,这是一个庞大的代码库,很难分离出一个代码段。如果没有重现问题的方法,您实际上是在问这是否是一个已知的问题。我查看了在的bug报告,没有看到任何东西,但是其他人会比我知道的更多。