Lwt.backtrace_* 函数
Lwt.backtrace_* functions
我刚刚注意到 Lwt.mli 中的以下功能:
val backtrace_bind : (exn -> exn) -> 'a t -> ('a -> 'b t) -> 'b t
val backtrace_catch : (exn -> exn) -> (unit -> 'a t) -> (exn -> 'a t) -> 'a t
val backtrace_try_bind : (exn -> exn) -> (unit -> 'a t) -> ('a -> 'b t) -> (exn -> 'b t) -> 'b t
val backtrace_finalize : (exn -> exn) -> (unit -> 'a t) -> (unit -> unit t) -> 'a t
不幸的是,它们没有记录。他们是做什么的?
GitHub 中的一些挖掘和文档显示,当使用 pa_lwt
和 -lwt-debug
传递给 camlp4
时,这些在内部用于在线程之间传播回溯。默认情况下,它们也用于与 ppx_lwt
.
相同的目的
此页面上记录了 -lwt-debug
选项:http://ocsigen.org/lwt/2.5.0/manual/(搜索 "backtrace support" 页面以转到它)。
在 ppx_lwt
中关闭 的选项记录在此处:https://ocsigen.org/lwt/dev/api/Ppx_lwt(搜索 -no-debug
)。
看到这个commit,这表明在try_lwt
生成的代码中使用了这些:https://github.com/ocsigen/lwt/commit/78eee34fb6247da38a3d4ea5b7872676181d47e2
已编辑:通过查看更多代码确认了更多内容,并合并了注释。
我刚刚注意到 Lwt.mli 中的以下功能:
val backtrace_bind : (exn -> exn) -> 'a t -> ('a -> 'b t) -> 'b t
val backtrace_catch : (exn -> exn) -> (unit -> 'a t) -> (exn -> 'a t) -> 'a t
val backtrace_try_bind : (exn -> exn) -> (unit -> 'a t) -> ('a -> 'b t) -> (exn -> 'b t) -> 'b t
val backtrace_finalize : (exn -> exn) -> (unit -> 'a t) -> (unit -> unit t) -> 'a t
不幸的是,它们没有记录。他们是做什么的?
GitHub 中的一些挖掘和文档显示,当使用 pa_lwt
和 -lwt-debug
传递给 camlp4
时,这些在内部用于在线程之间传播回溯。默认情况下,它们也用于与 ppx_lwt
.
此页面上记录了 -lwt-debug
选项:http://ocsigen.org/lwt/2.5.0/manual/(搜索 "backtrace support" 页面以转到它)。
在 ppx_lwt
中关闭 的选项记录在此处:https://ocsigen.org/lwt/dev/api/Ppx_lwt(搜索 -no-debug
)。
看到这个commit,这表明在try_lwt
生成的代码中使用了这些:https://github.com/ocsigen/lwt/commit/78eee34fb6247da38a3d4ea5b7872676181d47e2
已编辑:通过查看更多代码确认了更多内容,并合并了注释。