【问题标题】:what could be the reason for losing the service name in dbus在 dbus 中丢失服务名称的原因可能是什么
【发布时间】:2015-12-10 17:24:17
【问题描述】:

我正在使用 c++ common-api dbus 绑定。我从客户端调用服务器中名为 getCurrentTrackInfo(struct trackInfo_st &trackInfo) 的方法。

这个数据结构有超过 15 个成员。

当调用此特定方法 [getCurrentTrackInfo] 时,服务器会立即丢失总线名称。 [com.service.MediaPlayerDemo]

dbus 中是否有任何注意事项或错误代码列表,用于捕获丢失总线名称的原因。

【问题讨论】:

    标签: c++ linux dbus


    【解决方案1】:

    您可以使用dbus-monitor 观看总线上发生的事情,任何错误都应该可见。

    我会尝试使用另一种方法与服务交互,以排除绑定和客户端代码中的错误。一种方法可能是使用例如D-Feetdbus-send 如果您使用的是 linux 机器。

    如果错误是由于服务崩溃引起的(听起来就是这样),那么实际错误可能不会在总线上可见。

    【讨论】:

    • 由于我的服务崩溃,我无法在 dbus-monitor 日志中看到任何内容。在我的数据结构中,20 个元素中有 6 个元素是字符串。对于某些字符串集,dbus 方法调用很好,而对于其他一些字符串集,dbus 方法调用失败,客户端出现远程错误,服务器端服务崩溃。
    • 正如我在答案中所说,您可以通过与服务交互来将客户端排除为错误源,例如D-脚。如果服务无论如何都会崩溃,我会说很明显错误在服务中,并且您无法在客户端执行任何操作来修复错误。在 D-Bus 中,您无法在客户端中执行“不要”来使服务崩溃,如果发生这种情况,则服务中存在错误。
    • 谢谢。所以我会排除客户部分。现在我想检查服务器,任何关于如何在服务器中开始调试的帮助都会有很大的帮助。我尝试使用 D-Feet 它的酷工具。
    • 好的,太好了。该服务应该像任何其他软件一样进行调试。崩溃根本不一定与 D-Bus 有关。我建议您针对该问题提出一个具体问题,并在 Stack Overflow 上发布另一个关于它的问题。祝你好运!
    猜你喜欢
    • 1970-01-01
    • 2018-07-04
    • 2017-02-22
    • 1970-01-01
    • 2012-02-24
    • 1970-01-01
    • 2014-05-25
    • 2019-06-23
    • 1970-01-01
    相关资源
    最近更新 更多