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

标签 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 pt = new Thread(mt1);
        pt.setName("Mailthread");
        pt.start();
    }
}

Thread 类是:

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

最佳答案

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

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

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

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

关于java - 如何在 Java 中调试 Thread.start(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31383444/

相关文章:

java - Hessian,添加标题

java - 在新线程中启动后台服务会卡住主应用程序

javascript - Node.js 架构和性能

debugging - 我的 CUDA 内核是真的在设备上运行还是在仿真中被主机错误地执行?

debugging - 如何在运行时获取 Kony 应用程序的名称

Java - 为什么使用Class类的实例方法需要写classname.class.method或instance.getClass().method?

java - 如何暂时禁止项目中的包在 Java EE IDE 中编译

Java:泛型只接受枚举类型

c - 11线程程序段错误

Python3 和 PyCharm - 在运行/调试中调试日志级别