【问题标题】:Erlide erlang console appears to hangErlide erlang 控制台似乎挂起
【发布时间】:2014-04-22 04:21:22
【问题描述】:

我已经在七周内使用 Erlide for eclipse 完成了七种语言的 Erlang 教程,在我进入并发部分之前,大多数情况下似乎一切正常。

在本节中,作者通过一个简单的示例进行演示

loop() ->  
    receive
        "casa" ->  
                io:format("house~n"),
                loop();
        "blanca" -> 
                io:format("white~n"),
                loop();

        _ -> io:format("no comprendo~n"),
                loop()
    end.

当按照本书的建议运行时,我应该能够使用Pid ! "someStuff". 发送消息但是当运行它时,不会返回任何内容,并且调试器要求我在任何活动恢复之前终止进程。

这是控制台的示例。你会看到当我发送消息时,没有任何返回。

Eshell V5.10.4
(ErlangDay3@Jeff-PC)1> Pid = spawn(fun translate:loop/0).
<0.202.0>
(ErlangDay3@Jeff-PC)2> Pid ! "casa".
Pid ! "hello?".
WhatJustHappened.

这一切似乎都可以通过命令行直接使用 Eshell 完美运行(没有 eclipse 和 erlide)。我可能在某处错过了一些配置吗?我现在完全被难住了。我意识到也许 SO 不是解决此类问题的最佳场所,但是我已经完全用尽了我的 google-fu 并且似乎 erlide 没有任何论坛存在。

感谢您的任何建议。

如果它可以帮助我运行 Windows 7 和 Eclipse(STS,3.3.0),使用 Erlang 5.10.4 (R16B03-1)

【问题讨论】:

  • 正如你所说的代码是正确的,以帮助区分执行/调用问题和输出问题(在 erlang 中围绕 io:format 和 group_leader 有一些有趣的事情)我建议你添加第三条消息,如原子stop,您不回调loop(),只需返回原子stopped。如果您可以使用Pid ! stop 停止该过程,那么您应该在 group_leader 方向进行挖掘。
  • 谢谢。我刚试过这个,eshell停止响应。但是,当我从控制台启动一个 eshell 并以相同的方式执行我的测试时,一切都按预期工作(发送停止,停止。发送其他人返回适当的响应)。我认为问题出在 erlide 中,因为这在控制台 shell 中可以正常工作。

标签: erlang erlang-shell erlide


【解决方案1】:

感谢您的报告!

这是我不久前一直在寻找的错误,但现在我设法找到并修复了它。请尝试来自http://download.erlide.org/update/nightly的最新夜间版本

【讨论】:

    猜你喜欢
    • 2015-06-19
    • 2012-11-07
    • 1970-01-01
    • 1970-01-01
    • 2020-06-25
    • 2016-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多