2011-04-22 58 views
3

好的,所以我有一個在netbeans中運行的遺傳算法,它運行了5個小時,似乎進入了一個無限循環。有什麼方法可以將調試器附加到它嗎?或者至少弄清楚它在代碼中的位置?我寧願不要再等待5個小時,等待它再次發生。代碼中的罕見無限循環,不想等待它再次發生

+0

這裏不需要代碼,他只是問他是否可以在運行時連接一個調試器。提出了問題。 – user237419 2011-04-22 07:43:47

回答

9

從正在運行的程序中獲取一些基本信息的簡單方法是在其上運行jstack,它將打印代碼中所有線程的堆棧跟蹤。做幾次,你應該有一個好主意是什麼錯。

使用jps找出你喜歡的JVM的id,然後使用jstack與ID:

$ jps 
10664 Jps 
7141 org.eclipse.equinox.launcher_1.2.0.v20110124-0830.jar 
$ jstack 7141 

VisualVM提供類似的信息,如果你喜歡一個GUI應用程序。

+0

生病了吧,要去搞清楚jstack是怎麼回事:) – wbarksdale 2011-04-22 07:37:28

+1

VisualVM(JDK的一部分)也能夠生成堆棧跟蹤 – 2011-04-22 07:38:26

+0

VisualVM是一個救生員,非常感謝 – wbarksdale 2011-04-22 07:54:39