2012-05-01 153 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