Erlang VM -s 参数导致我的程序失败

Erlang VM -s Argument is causing my program to fail

我已阅读此处的主题:Erlang VM -s argument misbehaving 并进行了故障排除,但无济于事。

当我 运行 没有 -s 标志的 erlang 虚拟机时,我的函数工作:

bridge_sup:start_link().

   Bridge Supervisor Initializing
   [warning] ClientId is NULL!
   [warning] ClientId is NULL!
   Success
   Success

但是,如果我设置了 -s 标志,当我的函数继续调用另一个函数时 emqttc:start_link(...) 它永远不会 returns:

Bridge Supervisor Initializing
   [warning] ClientId is NULL!
   [warning] ClientId is NULL!

我可以确认这不仅仅是打印问题,因为我连接的程序没有接收到信号。

在 Erlang VM 中可能是什么原因造成的?我也尝试过使用 eval 达到同样的效果。这是 ./运行 代码:

erl -pa ebin -pa deps/*/ebin

提前致谢!

可能是启动顺序问题。使用 -s(或 -运行 或 -eval)将命令指定为 运行 意味着它启动得非常快,而系统的某些部分可能仍在后台启动。尝试在你的函数开始时添加一个睡眠,看看它是否改变了什么。在那种情况下,请尝试找出取决于顺序的内容。

我使用的是 Erlang 版本 19.2。我不确定这是此版本中的错误,还是启动程序的要求,但我添加了一个 .app.src 文件并添加了“-eval 'application:start(myprog)'”,程序现在将开始!

请注意,它不是以 -s、-eval 或任何没有 app.src 文件且没有 application:start

开头的