2011-03-23 42 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