3

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

IntelliJ IDEA Java 调试器中是否有等效的东西?如果是这样,我该如何配置它?

谢谢

4

2 回答 2

4

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

示例选项:

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

您可能希望首先suspend=y暂停执行,直到您连接到调试器。

于 2012-09-17T07:34:26.160 回答
0

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

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

  1. 安装AttachMe
  2. 要启用自动模式,首先运行它,source ~/.attachme/conf.sh
  3. 然后启动 AttachMe 监听器
  4. 使用 prod 模式下的 Play 应用程序对其进行测试(假设启用了 play 插件),执行sbt start. 以 prod 模式运行会分叉另一个 JVM 进程。调试点现在应该命中。
于 2020-07-08T08:37:25.883 回答