我是DBus的初学者并使用dbus编写了一个示例应用程序,但我遇到了一个奇怪的问题。我的应用程序在guest虚拟机操作系统上正常运行为Ubuntu(在Windows主机上的虚拟机上),但同一个应用程序无法在独立的Ubuntu系统上运行(也尝试过meego,也没有运气)。
然后,我验证了对dbus,glib库版本的明显疑虑。它在两种环境中都是一样的,问题是一致的。我的意思是应用程序总是在虚拟机上没有任何问题,并且总是在独立的ubuntu上崩溃。
这是关于这个问题的简要说明。
我重新验证了所有可能发生“seg fault”的地方,这对我来说都很好看。这就是我将我的arg附加到dbus消息的方式。
dbus_message_append_args(pDbusMsg, DBUS_TYPE_ARRAY, DBUS_TYPE_BYTE, &pData, sizeof(pData),
DBUS_TYPE_INVALID) != TRUE)
然后连接发送..然后calling dbus_connection_flush()
。此外,由于我的应用程序必须再次发送相同的消息(但不是立即),我通过调用dbus_message_new_signal()
重新注册相同的信号..我已经验证了所有指针/内存/ dbusmessage ..一切看起来很好并且有效在虚拟化的ubuntu操作系统上很好。
只是添加,我尝试使用dbus_connection_send_preallocated()
发送,它适用于少量消息(10-15~),但不够一致。
你有过这样的问题吗,请让我知道解决这个问题的任何线索......任何帮助都会受到赞赏或任何示例/教程以及考虑到我刚开始使用dbus: p
由于
答案 0 :(得分:0)
我不知道您是否听说过与dbus相关的调试工具。首先,您可以尝试使用一些dbus-debugging-tool调用公开的函数。如果在使用该工具调用时它不会引发分段错误,那么您可能应该在代码中查找问题。否则你应该检查与环境有关的事情。
其中一个工具是 - DFeet
另一个这样的调试器(基于命令行)也由Qt人提供。