2011-11-24 34 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的人來提供。