2011-03-23 85 views
2

我正在嘗試編寫一個小型內部工具,用於在Swing應用程序中調試焦點問題。現在調試器工具內置於應用程序中並通過調試命令行參數啓用。連接到另一個JVM並監聽事件?可能?

我想要做的是有一個單獨的獨立Java應用程序,可以連接到另一個JVM並監聽某些事件(在本例中爲KeyboardFocusManager上的PropertyChangeEvents)。

理想的情況下,它應該能夠做到這一點沒有任何改變被調試的應用程序,因此它可以「按需」在任何Swing應用程序調試的焦點問題中。有點像VisualVM可以連接到任何正在運行的虛擬機。

這可能嗎?什麼是一些起點? JMX?其他一些IPC機制?

回答

2

不知道這是否涵蓋它,但..假設應用程序啓動與這些標誌:

-Xdebug -Xrunjdwp:transport=dt_socket,address=8001,server=y,suspend=n 

您可以將調試器連接到遠程使用Eclipse的過程。

+0

對,但是我希望有一個獨立的應用程序,基本上通知您所有的焦點變化事件。是否有可能通過調試API以編程方式執行此操作? – 2011-03-23 19:03:20

+0

焦點更改事件是程序,這就是爲什麼你必須有聽衆反應他們來說,JVM不能神奇地作出反應的東西,因此它不知道。 – 2011-03-23 19:07:28

+2

啊。 類MethodEntryRequest在JDI(Java調試接口)做到這一點。基本上,流程是您附加到流程,獲取EventRequestManager的實例,在那裏註冊您的方法入口請求並啓用它。 你仍然需要這些調試標誌我張貼以上,但。 – MarcB 2011-03-23 19:08:45