我正在尝试启动失败的Erlang应用。我在shell中看到的只有:
=INFO REPORT==== 7-Jan-2010::17:37:42 ===
application: ui
exited: {shutdown,{ui_app,start,[normal,[]]}}
type: temporary
如何让Erlang向我提供有关应用程序未启动的更多信息? shell中目前没有其他输出。
答案 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写入应用程序的启动函数(即具有应用程序行为的模块代码)并确定哪一行失败:(
有时蛮力和无知是你唯一的人......