我是Erlang的新手,但我想知道是否有可能以某种方式附加到工作应用程序中,并检查它正在使用的ETS或DETS。如果是,你愿意举一个小例子吗?
谢谢!
发布于 2018-01-17 02:42:04
如果您可以访问ETS表,您可以使用它来查看它。在erlang中,只需键入observer:start().
来打开GUI。
要连接到正在运行的命名节点,可以使用Erlang中的节点选项。
启动命名节点
$erl -name application@hostname
从另一台机器或终端启动新的erlang外壳。
$erl -name temp@hostname
从临时的erlang中,按Ctrl+g连接到应用程序,然后按h
或?
获取选项列表。选项r
是连接到远程节点和c
以连接到新作业。
>r 'application@hostname'
>c
之后,您可以像在机器上那样调用任何命令,调用任何模块:函数,并访问ETS表。
如果您在同一台机器上没有其他任何东西,如果您在不同的机器上,您必须设置cookie以便它们匹配,否则您将无法连接。
断开连接时要小心,必须在退出之前切换到本地节点,或者关闭临时应用程序,不要关闭真正的应用程序。
Rebar3
现在很多人使用Rebar3来创建和运行Erlang项目,如果您不使用它,我强烈建议使用它。
使用Rebar3,可以使用start命令启动应用程序,并使用附加命令附加到正在运行的应用程序。您必须使用Rebar3发布使用这些命令。这里有更多的信息。
样本:
rel/my_app/bin/my_app start
rel/my_app/bin/my_app attach
然后,按照上面提到的方式访问ETS或使用erlang手册页中列出的任何ets命令。
使用ctrl+D进行分离。
混合并匹配,您可以使用常规的erl -name temp@hostname
shell连接到使用rebar3启动的项目。只要cookies匹配,并且知道节点名称,就不必使用Rebar3来附加到正在运行的应用程序。
https://stackoverflow.com/questions/48260246
复制相似问题