如果VM正在调试,如何从Java代码中了解?

参见英文答案 > How to find out if “debug mode” is enabled                                    3个
我想要这样的东西:

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

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

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

最佳答案
this thread的作者找到了这个解决方案:

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

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

转载注明原文:如果VM正在调试,如何从Java代码中了解? - 代码日志