代码中的罕见无限循环,不想等待它再次发生

问题描述:

好的,所以我有一个在netbeans中运行的遗传算法,它运行了5个小时,似乎进入了一个无限循环。有什么方法可以将调试器附加到它吗?或者至少弄清楚它在代码中的位置?我宁愿不要再等待5个小时,等待它再次发生。代码中的罕见无限循环,不想等待它再次发生

+0

这里不需要代码,他只是问他是否可以在运行时连接一个调试器。提出了问题。 – user237419 2011-04-22 07:43:47

从正在运行的程序中获取一些基本信息的简单方法是在其上运行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