无法连接节点至Erlang调试器ErlyBerly的问题咨询
ErlyBerly连接Erlang节点失败问题排查
问题背景
我正在学习Erlang调试器ErlyBerly,通过以下命令启动ErlyBerly:
java -jar target/*runnable.jar
我编写了一个带有无限循环的简单Erlang应用以保持运行,通过erl命令行界面启动了节点(Erlang节点与ErlyBerly运行在同一Linux机器上)。节点已在ErlyBerly中列出,但尝试连接时出现错误 "cannot connect to peer node"。我尝试过长节点名node@oc.com,仍出现相同错误。
ErlyBerly的文档提到:"只需确保runtime_tools应用在代码路径中可用。如果直接使用erl运行节点,它会默认可用"。我对此不甚理解:什么是runtime_tools?如何直接用erl运行节点?
错误信息截图:
问题解答
1. 什么是runtime_tools?
runtime_tools是Erlang官方提供的一套运行时工具集,包含调试、性能分析、节点监控类的核心模块(比如dbg调试框架、observer监控工具等)。ErlyBerly需要依赖这些工具实现与Erlang节点的调试连接,获取节点的运行状态、进程信息等数据。
2. 如何直接用erl运行节点?
"直接用erl运行节点"指的是直接通过系统命令行执行erl命令启动Erlang节点,而非通过构建工具(如rebar3的rebar3 shell)、自定义脚本或第三方框架启动。
直接启动节点的示例命令:
# 启动短节点名的本地节点(默认绑定localhost) erl -sname mydebugnode # 启动长节点名的节点(需确保主机名可解析,或直接指定IP) erl -name mydebugnode@127.0.0.1
这种原生方式启动的节点,runtime_tools会被自动加入代码路径,无需额外配置。
3. 连接失败的额外排查点
除了确认runtime_tools可用,还需检查以下关键配置:
- 节点Cookie一致:Erlang节点间建立连接必须使用相同的Cookie。你可以在启动Erlang节点时指定Cookie:
同时在ErlyBerly的节点连接配置中填入相同的Cookie值。erl -sname mydebugnode -setcookie erlyberlysecret - 节点名解析正常:如果使用长节点名
node@oc.com,需确保oc.com能被本地机器解析(可修改/etc/hosts添加127.0.0.1 oc.com),或者直接使用IP作为节点名的主机部分(如node@127.0.0.1)。 - 端口与防火墙:同一机器下通常无需担心端口问题,但可确认Erlang节点的默认端口(4369及随机分配的通信端口)未被本地防火墙拦截。
内容的提问来源于stack exchange,提问作者Bhuvan
相关产品推荐
相关产品推荐

