【问题标题】:Erlang OTP-observer not displaying my applicationErlang OTP-observer 不显示我的应用程序
【发布时间】:2014-07-04 00:36:48
【问题描述】:

我目前正在与 erlang 的 OTP 观察者作斗争。 我的应用程序 - gen_server 和主管 - 运行良好,但是当我尝试使用观察者查看进程时,我只能在观察者 GUI 的“应用程序”选项卡中查看“内核”。

这些是连接节点的命令,仅此而已:

----------观察者---------- --

/home/erlang# erl -pa ebin/ -sname 观察者 -setcookie tmp -run 观察者

(Erlang:9911): GLib-GIO-CRITICAL **: g_dbus_connection_register_object: 断言 'G_IS_DBUS_CONNECTION (connection)' 失败

(Erlang:9911): GLib-GIO-CRITICAL **: g_dbus_connection_register_object: 断言 'G_IS_DBUS_CONNECTION (connection)' 失败

(Erlang:9911): GLib-GIO-CRITICAL **: g_dbus_connection_get_unique_name: 断言 'G_IS_DBUS_CONNECTION (connection)' 失败 Eshell V6.0(使用 ^G 中止) (观察者@ergo)1> (Erlang:9911): GLib-GIO-CRITICAL **: g_dbus_connection_register_object: 断言 'G_IS_DBUS_CONNECTION (connection)' 失败

(Erlang:9911): GLib-GIO-CRITICAL **: g_dbus_connection_register_object: 断言 'G_IS_DBUS_CONNECTION (connection)' 失败

(Erlang:9911): GLib-GIO-CRITICAL **: g_dbus_connection_get_unique_name: 断言 'G_IS_DBUS_CONNECTION (connection)' 失败

(Erlang:9911): GLib-GIO-CRITICAL **: g_dbus_connection_register_object: 断言 'G_IS_DBUS_CONNECTION (connection)' 失败

(Erlang:9911): GLib-GIO-CRITICAL **: g_dbus_connection_register_object: 断言 'G_IS_DBUS_CONNECTION (connection)' 失败

(Erlang:9911): GLib-GIO-CRITICAL **: g_dbus_connection_get_unique_name: 断言 'G_IS_DBUS_CONNECTION (connection)' 失败

------------要查看的节点-------- ----

/home/erlang# erl -pa ebin/ -sname worker Eshell V6.0(使用 ^G 中止)

(worker@ergo)1> 个节点()。

[]

(worker@ergo)2> net_adm:ping(observer@ergo).

乒乓

(worker@ergo)3> 个节点()。

[观察者@ergo]


在观察者 GUI“跟踪概览”中,我添加了节点 (worker@ergo)。但是我只能在应用程序选项卡中查看内核,并且在跟踪概述中没有列出任何进程。

如何在观察者 GUI 中查看我的应用程序的进程树?

【问题讨论】:

    标签: process erlang erlang-otp observers


    【解决方案1】:

    您的应用程序是否遵循 OTP 应用程序行为?是否以application:start/1 开头?

    【讨论】:

      【解决方案2】:

      您不需要在 Trace Overview 选项卡中添加工作节点。但是,您需要确保通过从 Nodes 菜单中选择节点来观察工作节点。被观察节点通常出现在观察者窗口的标题中。

      应用程序 选项卡列出了所有正在运行的应用程序以及一个监督树。如果您的应用程序未列出,则它可能没有运行,或者它可能没有监督树。您可以使用未记录的 API application:info() 检查它是否正在运行。您可以检查它是否有一个带有未记录 API application_controller:get_master(AppName) 的监督树,它返回具有监督树的任何应用程序的主进程的 pid。

      【讨论】:

        猜你喜欢
        • 2011-07-13
        • 2011-05-24
        • 2012-10-11
        • 2015-12-14
        • 2018-07-16
        • 2014-12-15
        • 2015-05-12
        • 2012-10-30
        • 2010-11-24
        相关资源
        最近更新 更多