我有一个基于OTP的Erlang应用程序似乎表现得很奇怪。
我想连接到erlang shell并准确追踪正在发生的事情。 我可以对dbg:tracer(),dbg:tp()等进行所有调用,但是没有输出发送到我的shell。
我想这可能是因为我通过远程shell连接。
但是,当我调用dbg:n(wiwob @ vlxd38-wob)时。我收到一个错误:
** exception error: bad argument in an arithmetic expression
in operator -/2
called as wiwob@vlxd38 - wob
如何找出输出发送到哪个shell并将其传递给我的shell?
答案 0 :(得分:3)
dbg:n/1
的参数必须是原子而wiwob@vlxd38-wob
不是原子,需要引用'wiwob@vlxd38-wob'
。有关atom的语法和其他数据类型,请参阅Atoms。
答案 1 :(得分:1)
我无法帮助您解决dbg问题,您没有提供有关如何将调试器连接到进程,模块的足够信息......
对于第二点,错误是自解释的,解析表达式wiwob @ vlxd38-wob,shell尝试执行
wiwob @ vlxd38减去wob,2个原子是不可能的。函数dbg:n / 1具有以下规范:
n(Nodename) -> {ok, Nodename} | {error, Reason}
Nodename = atom()
Reason = term()
因此您必须将您的节点名称写为'wiwob @ vlxd38-wob',以强制整个表达式为单个原子。