如何调试ProcessBuilder启动的Java进程

如何调试ProcessBuilder启动的Java进程,java,eclipse,Java,Eclipse,有两个Java文件。一个是A,另一个是B。A和B都有主要功能。然后运行A,在A中,通过ProcessBuilder.start()启动B的进程 我可以调试A的代码。但是,我不能调试B。即使我在B的主函数中添加断点,Eclipse也不会停在B的那一行。到目前为止,我能想到的唯一方法是模拟A中的参数,并直接调用B的主函数。但是不太方便。有什么简单直接的方法吗 提前感谢您的建议。不要使用process builder启动其他流程;如果需要A和B的main方法同时运行,可以使用线程 public cla

有两个Java文件。一个是A,另一个是B。A和B都有主要功能。然后运行A,在A中,通过ProcessBuilder.start()启动B的进程

我可以调试A的代码。但是,我不能调试B。即使我在B的主函数中添加断点,Eclipse也不会停在B的那一行。到目前为止,我能想到的唯一方法是模拟A中的参数,并直接调用B的主函数。但是不太方便。有什么简单直接的方法吗


提前感谢您的建议。

不要使用process builder启动其他流程;如果需要A和B的
main
方法同时运行,可以使用线程

public class A {
    public static void main(String[] args) {
        Thread bThread = new Thread(new Runnable() {
            public void run() {
                B.main(args);
            }
        });
        bThread.start();
        // Doing something for A
    }
}

public class B {
    public static void main(String[] args) {
        // Doing something for B
    }
}

为Java启动单独的进程通常是个坏主意,因为您可以在同一个进程中运行所有内容。它仍然适用的用例有限,但由于您没有提供启动进程的基本原理,我认为您不知道如何使用线程。

您必须告诉子进程以调试模式启动,然后,您可以将远程调试器附加到它…您可以将类似于
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1044的内容传递到运行类的Java进程,然后在您的IDE中,在子进程启动hi@MadProgrammer之后,将远程调试器附加到指定的端口,谢谢您的评论。这真的很有帮助。是的,用于远程调试;)如果出于任何原因希望为子进程分配一组不同的JVM参数,那么单独的进程仍然是有用的。E与heap size或类似的@daniel.kahlenberg相关,正如我提到的,OP没有提供任何参数。在很少的情况下,这是有意义的,我相信OP会提到一些相关的东西。
public class A {
    public static void main(String[] args) {
        Thread bThread = new Thread(new Runnable() {
            public void run() {
                B.main(args);
            }
        });
        bThread.start();
        // Doing something for A
    }
}

public class B {
    public static void main(String[] args) {
        // Doing something for B
    }
}