2014-10-21 31 views
2

我正在使用JDWP與Android VM交談的Java調試器。如何偵測/捕獲從JDWP到Android VM的數據包?

我最感興趣的是從桌面到模擬器,而不是在設備上。 我知道,在設備上,這是一個完全不同的問題,所以這就是爲什麼我想集中精力從桌面到模擬器。

我發現,一些常見的JDWP包命令得到「ERROR_NOT_IMPLEMENTED」的錯誤, 所以這將是一個容易得多,如果我能窺視,或能夠捕捉到JDWP 數據包從已知的工作來調試,得到他們正在發送的命令組合的更好的想法。能夠得到答覆也會很好。

我看着Wireshark和WinDump,但他們似乎都是基於接口的, ,無論我嘗試使用什麼設置,我都沒有獲得任何數據包方式。

我的問題是,有什麼工具可以用於此?

謝謝!

+1

我的印象是這個通過回送TCP套接字,並回送端口5555,但它在模擬器上通過亞行和亞行相互交談的兩個部分作品下有可能它的一些現在是unix域套接字 - adbd到設備上的虛擬機一直是unix域。請注意,adb的來源很容易獲得 - 與DVM或ART相同。 – 2014-10-22 01:43:33

+1

對於我而言:'adb jdwp'獲得PID,然後'adb forward tcp:8000 jdwp:(PID)',但我想其他調試器可能會以不同的方式獲得端口。我試圖看看VM代碼,但是需要很長時間才能找到我需要的不同信息。 – user1572522 2014-10-22 03:31:54

+0

下面是我正在嘗試解決的許多問題之一。我想嘗試設置一個斷點,並且需要一個Location對象,並且該對象具有「無符號的八字節位置」,但是當我嘗試使用ClassId和MethodId執行LineTable命令時,它會返回'ERROR_NOT_IMPLEMENTED'.. – user1572522 2014-10-22 17:55:36

回答

1

我在GitHub上有一個項目,它允許您「監視」JDWP流量,我在開發NetBeans調試器時開發了它,以幫助我分析調試器相關的問題。

看一看這裏: https://github.com/kherink/jdwp-analyzer