如何在toplevel中打印函数调用和回溯信息?

3

我正在尝试获取函数调用的回溯。我想知道是否有人知道如何在顶层执行此操作。

1个回答

4

#trace指令用于跟踪函数,例如:

# let rec f x = if x > 0 then f (x - 1) else "done";;
val f : int -> string = <fun>
# #trace f;;
f is now traced.
# f 12;;
f <-- 12
f <-- 11
f <-- 10
...

要跟踪多个函数,请对它们全部使用 #trace,例如,
#trace f;;
#trace g;;

不要忘记,在重新定义函数后,需要再次调用#trace,因为从顶层的角度来看,这是一个新函数,尽管它具有相同的名称。

要取消追踪函数f,请使用#untrace f,要取消追踪当前所有已追踪的函数,请使用#untrace_all

另外,您可能会发现Printexc.get_callstack函数很有用,如果您启用了Printexc.record_bactrace true的跟踪记录,则会显示当前的调用堆栈。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接