Java IntelliJ IDEA调试器跟踪子进程

Java IntelliJ IDEA调试器跟踪子进程,java,debugging,intellij-idea,Java,Debugging,Intellij Idea,我们有一些Java代码,它使用以下代码启动一个新进程:Runtime.getRuntime().exec(命令)我希望能够通过发出set follow fork mode child命令,告诉调试器它应该遵循子进程,就像您对GDB所做的那样 IntelliJ IDEA Java调试器中是否有类似的东西?如果是,我如何配置它 谢谢Java没有提供自动调试进程及其子进程的方法。需要使用JVM选项运行子进程以启用调试。IDEA远程调试配置将建议使用正确的选项。使用适当的选项启动流程后,您可以使用远程调

我们有一些Java代码,它使用以下代码启动一个新进程:
Runtime.getRuntime().exec(命令)我希望能够通过发出
set follow fork mode child
命令,告诉调试器它应该遵循子进程,就像您对GDB所做的那样

IntelliJ IDEA Java调试器中是否有类似的东西?如果是,我如何配置它


谢谢

Java没有提供自动调试进程及其子进程的方法。需要使用JVM选项运行子进程以启用调试。IDEA远程调试配置将建议使用正确的选项。使用适当的选项启动流程后,您可以使用远程调试配置从IDEA连接到该流程

示例选项:

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005

您可能希望从
suspend=y
开始,以便在连接调试器之前暂停执行。

我们现在有了这个Intellij插件,它使用java代理在调试模式下自动启动所有子进程

它侦听7857上的任何被调试进程,然后将调试器附加到这些进程

  • 安装
  • 要启用自动模式,请先运行此命令,
    source~/.attachme/conf.sh
  • 然后启动附件侦听器
  • 使用prod模式下的Play应用程序进行测试(假设Play插件已启用),执行
    sbt start
    。prod模式下的Play派生另一个JVM进程。调试点现在应该命中了

  • 在推特上点击@wajiii,他可能知道这一点。子进程是JVM吗?请注意,您必须调整此进程的VM选项,以便它在调试模式下启动。不,IDEA不以自动方式支持它,但您可以使用第二个远程调试配置来连接和调试使用适当调试选项启动的子进程。@CrazyCoder:是的,子进程是JVM。谢谢你的回复。我正在寻找一种无需使用远程调试的自动方式,但我似乎没有太多选择。是的,您可以通过两种方式进行连接:等待应用程序和应用程序等待调试器。通过这种方式,您可以实现所有可能的场景。您可以继续执行此线程: