我正在NetBeans IDE 8.0.2中调试一个Java应用程序。
当Thread.start()
方法被调用时,我无法到达那个线程的run()
方法(尽管我在那个方法中放置了断点)。然而,有时它会命中该方法,有时则不会。
如何在调试时访问run()
方法?
public class JavaApplication7 {
public static void main(String[] args) {
Mailthread1 mt1 = new Mailthread1();
Thread pt = new Thread(mt1);
pt.setName("Mailthread");
pt.start();
}
}
Thread类是:
class Mailthread1 implements Runnable {
public void run() {
System.out.println("Cant hit this line");
}
}
2条答案
按热度按时间hwamh0ep1#
在JDWP中,有3种类型的断点:类、方法和行。
如果IDE无法拦截println()中的行断点,则可以尝试run()重新声明中的方法断点。
如果失败了,字节码和源代码之间就有不同步的地方,你可以试着添加行,在上面和下面再断点一行。
除此之外,改变IDE和/或改变JVM。这应该会起作用。
jmo0nnb32#
在代码的main分支中没有t.join()或sleep,因此理论上新线程会启动,但main方法也会继续运行并退出,应用程序甚至在其他线程中执行操作之前就终止了,断点也无法到达。