2011-11-24 93 views
-1

我是DBus的初学者,使用dbus编写了一个示例应用程序,但我面临一个奇怪的问题。我的应用程序在客户端操作系统上运行良好,与Ubuntu(在带有Windows主机的虚拟框中)一样,但同一个应用程序无法在独立的Ubuntu系统上运行(也在meego上尝试过,也没有运气过关)。Wierd Dbus问题 - dbus_connection_send失败

然后,我验证了对dbus,glib库版本的明显疑虑。它在两个环境中都是一样的,问题是一致的。我的意思是应用程序总是运行时没有任何虚拟盒子上的问题,并且总是在独立的Ubuntu上崩溃。

这里是关于这个问题的简要描述。

  1. 应用应该发送上DBUS 150点的信号和其他应用是 接收这些信号。 (在这里没有问题发送&收到)。
  2. 我有一个DbusMessage [150]的数组(也尝试了150 DBusMessage的列表)...将参数附加到dbus消息并发送到总线..一次...一个没有循环。 ..
  3. dbus API的顺序都是正确的,并通过引用多个示例源代码进行验证。
  4. 所有上述工作正常,但在独立的Ubuntu系统上,我总是可以看到分段错误,在dbus_connection_send()调用。
  5. 我重新认识了“seg故障”可能发生的每一个可能发生的地方,这一切对我来说都很好。这是我如何将我的arg附加到dbus消息。

    dbus_message_append_args(pDbusMsg, DBUS_TYPE_ARRAY, DBUS_TYPE_BYTE, &pData, sizeof(pData), DBUS_TYPE_INVALID) != TRUE)

然后连接send..and然后calling dbus_connection_flush()。此外,由于我的应用程序必须再次发送相同的消息(但不是立即),我重新登记相同的信号,通过调用dbus_message_new_signal() ..我已验证所有指针/内存/ dbusmessage..everything看起来不错,并在虚拟化ubuntu操作系统。

只是添加,我试着与dbus_connection_send_preallocated()发送,它适用于几条消息(10-15〜),但不够一致。

你有没有遇到过这样的问题,请让我知道任何线索来解决这个问题....任何帮助将不胜感激或任何示例/教程,以及考虑到我刚刚开始与dbus :P

感谢

+0

问题是探索性的或含糊不清的,并没有包含足够的细节来知道代码在做什么或如何诊断问题。 –

回答

0

我不知道你是否听说过DBUS相关调试工具。开始时,您可以尝试使用某些dbus-debugging-tool调用暴露的函数。如果在您使用该工具进行调用时不发生分段错误,那么可能应该在代码中查找问题。否则,你应该检查与环境有关的东西。

一个这样的工具是 - DFeet

另一个这样的调试器(基于命令行)由Qt的人来提供。