4

我想要这样的东西:

long timeout = isDebugModeActive() ? Long.MAX_VALUE : 10000;

因此,当调试器在断点处停止时,不会发生超时。

是否有任何 API 或系统/环境属性可以找到它?

4

4 回答 4

2

该线程的作者找到了这个解决方案:

java.lang.management.ManagementFactory.getRuntimeMXBean().
getInputArguments().toString().indexOf("-agentlib:jdwp") > 0;

不过,标准的免责声明似乎是合适的 - 这非常脆弱(因为它在触发时非常具体)并且可能导致Heisenbugs(当您尝试调试时不会出现的错误)。对于许多情况,系统属性或环境变量可能更好。

于 2012-10-02T08:16:56.563 回答
1

您可以进行新的运行配置(运行 -> 运行配置)并在那里添加环境变量或系统属性。

于 2012-10-02T08:01:07.183 回答
1

如果您开发 RCP 应用程序,您可以使用:

if(Platform.inDevelopmentMode()) {
   // ....
}
于 2012-10-02T08:13:59.270 回答
1

通过检查JVM启动程序的参数是可能的。

在那里你会看到:

-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=[port]

然后检查端口是否正在侦听或有连接。

于 2012-10-02T08:14:23.997 回答