java - 如何从 Java 代码知道 VM 是否正在调试?

标签 java debugging

<分区>

我想要这样的东西:

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

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

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

最佳答案

作者 this thread找到了这个解决方案:

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

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

关于java - 如何从 Java 代码知道 VM 是否正在调试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12686453/

相关文章:

debugging - 关于调试chrome扩展

c# - F5 或开始调试按钮对于 Winform 应用程序是灰色的吗?

ios - 如何在 Swift 中调试内存警告?

java - 安全管理器与访问 Controller

java - Jface KeyListener 未激活

java - 控制或预测 JVM 堆大小

java - 高性能应用程序中的 C/C++ 与 Java/C#

java - 如何跳转到clojure.lang java源码?

java - Eclipse Java 调试器源查找路径

debugging - 盲源步进的奥秘,或F#在大型源文件上的行为异常