如何在java中调试Thread.start()

Ani*_*mar 5 java debugging multithreading 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 pt = new Thread(mt1);
        pt.setName("Mailthread");
        pt.start();
    }
}
Run Code Online (Sandbox Code Playgroud)

而Thread类是:

class Mailthread1 implements Runnable {
    public void run() {
        System.out.println("Cant hit this line");
    }
}
Run Code Online (Sandbox Code Playgroud)

use*_*577 1

在JDWP中,有3种类型的断点:类、方法和行。

如果您的 IDE 无法拦截 println() 中的行断点,那么您可以在 run() 声明上尝试方法断点。

如果失败,则字节码和源代码之间存在不同步。您可以尝试添加行,在上方和下方的另一行上设置断点。

除此之外,更改 IDE 和/或更改 JVM。这应该有效。