如何在java中调试Thread.start()
我正在用NetBeans IDE 8.0.2调试一个Java应用程序 调用如何在java中调试Thread.start(),java,multithreading,debugging,netbeans-8,Java,Multithreading,Debugging,Netbeans 8,我正在用NetBeans IDE 8.0.2调试一个Java应用程序 调用Thread.start()方法时,我无法访问该线程的run()方法(尽管我在该方法中设置了断点)。 然而,有时它是击中方法,但有时不是 调试时如何访问run()方法 public class JavaApplication7 { public static void main(String[] args) { Mailthread1 mt1 = new Mailthread1();
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();
}
}
线程类是:
class Mailthread1 implements Runnable {
public void run() {
System.out.println("Cant hit this line");
}
}
在JDWP中,有3种类型的断点:类、方法和行 如果IDE未能截获println()中的行断点,则可以在run()重新关联上尝试方法断点 如果失败,则字节码和源代码之间存在不同步。您可以尝试添加行,在上面和下面中断另一行
除此之外,更改IDE和/或更改JVM。这应该是可行的。很多好的建议。这闻起来像是一个锁定的监视器问题,但我们需要看到一个小的测试用例来演示这种行为以进行诊断。如果这是有问题的,请尝试查看所有jvm线程的转储(它将列出它们是否被阻止,如果被阻止,等等)。@Shar1er80,添加了代码……这是NetBeans 8.0.2的问题。[link]()您将永远无法通过进入
start()
函数进入run()
函数。run()
函数在与单步执行不同的线程中调用。