OCaml 中有没有办法以编程方式获取当前调用堆栈?我的意思不是在调试器内部,而是作为程序内部的函数调用,它将打印当前调用堆栈。我想这不应该超出字节码解释器的能力,尤其是在调试符号可用的情况下。
问问题
1386 次
4 回答
9
我来到这个问题寻找同样的东西,这是我的解决方案
Printexc.get_callstack 5 |> Printexc.raw_backtrace_to_string
(这实际上是熟悉新代码库的好方法)
于 2015-06-29T18:57:00.563 回答
1
你也可以使用 ocamldebug,你可以用它来启动你的代码,编译成字节码。在这种环境下,Printexc.get_backtrace() 就更完善了。
于 2012-09-03T10:12:19.943 回答
0
不幸的是,从代码内部获取回溯的唯一方法是在引发异常时,然后可以使用 Printexc.get_backtrace ()。它不会给你函数的名称,只是堆栈中代码中的位置,只有当 OCaml 能够恢复它们时......
于 2012-08-13T07:42:48.073 回答
0
对于本机代码,可以使用 glibc 的backtrace,尽管它可能无法正确打印所有堆栈帧。
于 2012-08-13T07:17:22.760 回答