You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用OTP Debugger调试远程Erlang节点失败问题排查

跨Erlang节点调试无法发现目标节点的解决办法

常见问题排查与修复步骤

1. 统一节点Cookie

Erlang节点间通信强制要求相同Cookie,这是跨节点调试的基础:

  • 启动node1时指定Cookie:
    erl -sname node1 -setcookie shared_cookie -eval "maths:f1()"
    
  • 启动node2时使用相同Cookie:
    erl -sname node2 -setcookie shared_cookie
    
  • 若已启动节点,可在node2的shell中手动设置并连接:
    (node2@vm-alarm)1> erlang:set_cookie(node1@vm-alarm, shared_cookie).
    true
    (node2@vm-alarm)2> net_adm:ping(node1@vm-alarm).
    pong
    
    连接成功后刷新Debugger的Monitor窗口,目标节点应该会出现。

2. 防止目标节点提前退出

如果maths:f1()是一次性执行的短任务,node1可能在你打开Debugger前就已经终止了:

  • 修改启动命令,让node1保持运行状态:
    erl -sname node1 -setcookie shared_cookie -eval "maths:f1(), timer:sleep(infinity)."
    
    这样node1会一直存活,直到你手动关闭shell。

3. 手动连接目标节点

即使epmd显示节点已注册,Debugger可能不会自动探测到所有节点,需要手动触发连接:

  1. 在node2的shell中先确认节点可达:
    (node2@vm-alarm)1> net_adm:ping(node1@vm-alarm).
    pong
    
  2. 启动Debugger后,在Monitor窗口的Nodes菜单中选择Connect Node,输入完整节点名(如node1@vm-alarm)完成连接。

4. 验证节点完整名称

确保你使用的节点名称是完整的(包含主机名),可以在node1的shell中执行node().查看完整标识,避免因主机名解析问题导致连接失败。


内容的提问来源于stack exchange,提问作者Bhuvan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 09:13:28