0

我有一个基于 OTP 的 Erlang 应用程序,它的行为似乎很奇怪。

我想连接到 erlang shell 并准确跟踪正在发生的事情。我可以对 dbg:tracer()、dbg:tp() 等进行所有调用,但没有任何输出发送到我的 shell。

我认为这可能是因为我通过远程外壳连接。

但是,当我调用 dbg:n(wiwob@vlxd38-wob) 时。我收到一个错误:

** exception error: bad argument in an arithmetic expression
     in operator  -/2
        called as wiwob@vlxd38 - wob

如何找出输出发送到哪个 shell 并将其通过管道传输到我的 shell?

4

2 回答 2

3

to 的参数dbg:n/1必须是原子而wiwob@vlxd38-wob不是原子,它需要引用 like 'wiwob@vlxd38-wob'。有关 atom 的语法和其他数据类型,请参阅Atoms

于 2012-09-16T20:57:23.647 回答
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',以强制整个表达式为单个原子。

于 2012-09-16T17:58:48.340 回答