如何解释OCaml程序的GDB回溯?

如何解释OCaml程序的GDB回溯?,gdb,ocaml,Gdb,Ocaml,我正在试图读取GDB中我的OCaml程序的回溯。输出如下所示: (gdb) bt #0 0x0000000100535ac6 in .L207 () #1 0x0000000100535acb in .L207 () #2 0x0000000100535acb in .L207 () ... 我如何解释这种输出 编辑: 我已经使用/configure--enable debug(我使用的是oasis)启用了调试信息 我在OSX10.10上使用GDB7.9.1 我正在使用OCAML4.0

我正在试图读取GDB中我的OCaml程序的回溯。输出如下所示:

(gdb) bt
#0  0x0000000100535ac6 in .L207 ()
#1  0x0000000100535acb in .L207 ()
#2  0x0000000100535acb in .L207 ()
...
我如何解释这种输出

编辑:

  • 我已经使用
    /configure--enable debug
    (我使用的是oasis)启用了调试信息
  • 我在OSX10.10上使用GDB7.9.1
  • 我正在使用OCAML4.02.2

编辑2:对于Linux版本的GDB,输出似乎是正确的。有人知道为什么OS X和Linux版本之间存在如此大的差异吗?

您是用-g编译的吗?我通常会在caml_程序()中得到类似于
#3 0x00000000004049的东西
。还有导出OCAMLRUNPARAM=b
,在程序崩溃时提供堆栈跟踪

(您可能希望发布代码段和编译命令。)


您也可以找到和方便。

检查使用的是什么C编译器和汇编程序。Mac OS可能使用
clang
,并且它可能不会为
gdb
生成完整的调试信息。在这种情况下,使用
lldb
可能会更有成效。

您是否考虑过使用
ocamldebug
来代替,或者您是否在机器端进行调试


如果您想了解您的代码在CPU/Register/Assembly/Bitfiddling Witch端执行的操作,那么阅读Jane Street的博文可能会提供更多信息。

感谢您的回复:)。是的,我确实生成了调试信息。我已经看过幻灯片了,事实上,这就是我提出这个问题的原因。我知道OCAMLRUNPARAM,但这里我真的想知道更多关于如何使用GDB.Hmm调试OCaml代码的信息,不知道在没有看到代码的情况下还能说些什么。我猜你可以看看
grep-ocamlopt\u-build/\u-log
,它应该显示ocamlopt调用(
grep-ocamlc
resp.),应该有
-g