Java 代码中罕见的无限循环,don';I don’我不想等它再次发生

Java 代码中罕见的无限循环,don';I don’我不想等它再次发生,java,netbeans,loops,debugging,infinite,Java,Netbeans,Loops,Debugging,Infinite,好的,我已经在netbeans中运行了一个遗传算法,它已经运行了5个小时,似乎进入了一个无限循环。有什么方法可以将调试器附加到它上吗?或者至少能得到一些关于它在代码中的位置的线索?我不想再坐5个小时,等待它再次发生。从正在运行的程序中获取一些基本信息的简单方法是运行它,它将打印代码中所有线程的堆栈跟踪。这样做几次,你应该知道什么是错误的 使用查找JVM的id,然后使用该id使用jstack: $ jps 10664 Jps 7141 org.eclipse.equinox.launcher_1.

好的,我已经在netbeans中运行了一个遗传算法,它已经运行了5个小时,似乎进入了一个无限循环。有什么方法可以将调试器附加到它上吗?或者至少能得到一些关于它在代码中的位置的线索?我不想再坐5个小时,等待它再次发生。

从正在运行的程序中获取一些基本信息的简单方法是运行它,它将打印代码中所有线程的堆栈跟踪。这样做几次,你应该知道什么是错误的

使用查找JVM的id,然后使用该id使用
jstack

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

如果您喜欢GUI应用程序,可以提供类似的信息。

我来试一试,看看jstack是什么:)VisualVM(JDK的一部分)也能够生成StackTraceEyes,可能更简单。我只是习惯于在限制性防火墙和低带宽连接后面的服务器上这样做。在这些情况下,
jstack
更容易处理;-)这里不需要代码,他只是询问是否可以在运行时附加调试器。对问题投了赞成票。