如何确定Erlang应用程序未启动的原因?

时间:2010-01-07 22:39:30

标签: erlang

我正在尝试启动失败的Erlang应用。我在shell中看到的只有:

=INFO REPORT==== 7-Jan-2010::17:37:42 ===
    application: ui
    exited: {shutdown,{ui_app,start,[normal,[]]}}
    type: temporary

如何让Erlang向我提供有关应用程序未启动的更多信息? shell中目前没有其他输出。

3 个答案:

答案 0 :(得分:13)

您可以尝试使用更多日志记录支持启动shell:

erl -boot start_sasl

这可能会提供更多细节。

答案 1 :(得分:2)

版本R16B中包含patch(tp / supervisor-pass-on-errors)。此修补程序使退出原因出现在应用程序停止日志消息中,因此它比我们迄今为止所拥有的{shutdown,{ui_app,start,[normal,[]]}}样式消息更有用。

这是README

中的条目
OTP-10490  == stdlib ==

    If a child process fails in its start function, then the
    error reason was earlier only reported as an error report
    from the error_handler, and supervisor:start_link would only
    return {error,shutdown}. This has been changed so the
    supervisor will now return {error,{shutdown,Reason}}, where
    Reason identifies the failing child and its error reason.
    (Thanks to Tomas Pihl)

答案 2 :(得分:0)

这是一种痛苦,但我这样做的方式是老式的方式,通过将io:format写入应用程序的启动函数(即具有应用程序行为的模块代码)并确定哪一行失败:(

有时蛮力和无知是你唯一的人......