2012-05-01 111 views
1

我需要调试一开始就启动多个进程的项目,全部使用Java。使用多个进程进行调试

我的问题是调试这样的代码是非常烦人的。因为每次我完成一个调试会话时,所有其他进程都卡在内存中并且杀死所有进程非常烦人(因为它们没有进程名称,它们都是“java”)。

是否有可能自动执行所有杀戮? 或任何其他解决方案?

+1

你在使用什么平台/ IDE? – Attila

+0

我在Mac上使用Netbeans。 – MBZ

+0

是否有可能在一个JVM中运行所有进程?例如一个main()将它们全部称为? –

回答

0

似乎也没有办法!

0

您需要致电process.destroy才能杀死子进程。您可以为您的应用程序创建一个关闭钩子并将其添加到它。

您将需要测试它是否可以在调试器中使用,但无论如何,这是很好的,因为它可以确保您的应用程序完全关闭。

下面是一个例子:

// start a sub process 
final Process childProcess = new ProcessBuilder("some command").start(); 


// add a shutdown hook which will be invoked when the JVM is shutting down 
Runtime.getRuntime().addShutdownHook(new Thread() { 
    @Override 
    public void run() { 
     childProcess.destroy(); 
    } 
}); 
+0

tnx,但我想知道是否当停止调试会话时关闭挂钩调用? – MBZ

+0

不在eclipse中。请参阅:https://bugs.eclipse.org/bugs/show_bug.cgi?id = 38016。你必须在Netbeans上测试它。 – dogbane

+0

都不在Netbeans中。刚刚测试! – MBZ