我正在尝试在GDB中阅读我的OCaml程序的回溯。输出如下所示:
(gdb) bt
#0 0x0000000100535ac6 in .L207 ()
#1 0x0000000100535acb in .L207 ()
#2 0x0000000100535acb in .L207 ()
...
我如何解释这种输出?
编辑:
./configure --enable-debug
启用了调试信息(我正在使用绿洲)。编辑2:Linux版本的GDB输出似乎是正确的。有谁知道为什么OS X和Linux版本之间存在这样的差异?
答案 0 :(得分:2)
你用-g编译了吗?我通常会收到像#3 0x0000000000401f49 in caml_program ()
这样的内容。还有export OCAMLRUNPARAM=b
,当程序崩溃时会给出堆栈跟踪。
(您可能希望发布代码段和编译命令。)
您还可以找到http://www.ocamlpro.com/blog/2012/08/20/ocamlpro-and-4.00.0.html和http://oud.ocaml.org/2012/slides/oud2012-paper5-slides.pdf。
答案 1 :(得分:2)
检查使用的C编译器和汇编器。 Mac OS可能使用clang
,但可能无法为gdb
生成完整的调试信息。在这种情况下,使用lldb
可能会更有成效。
答案 2 :(得分:0)
您是否考虑过使用ocamldebug
,或者 在机器端进行调试?
如果你想了解你的代码在CPU / Register / Assembly / Bitfiddling-witchcraft上做了什么,那么阅读Jane Street的博客文章writing performance sensitive ocaml code可能会提供更多信息。