Java 程序如何知道它是否在调试模式下运行?
应用程序在常规“全速”模式下的行为应与“调试模式”下(当连接调试器时,在调试模式下运行时)略有不同。应用程序通过 TCP 与另一台计算机、另一个进程或自身内部进行通信。我的同事希望我们使用Socket.setSoTimeout(1000)
默认情况下,从套接字读取最多可以阻塞 1 秒。调试时,这当然还不够,应用程序会停止正常工作。所以解决方案是设置SO_TIMEOUT
更高,但仅在调试模式下(例如:无限制)。现在,我并不总是设置断点,或者不想使用调试版本,我可以自己设置“调试”属性。有时我会附加调试器(远程调试)。我主要使用 Eclipse,因此只要在那里工作的解决方案就可以了。
可能的答案包括:
要查明是否在调试模式下运行,请使用以下方法java.lang.management.*
or javax.management.*
...
你的同事因 X 原因而犯了错误,你不应该设置SO_TIMEOUT
默认为 1 秒。
Update
我了解系统属性方法,但我保留问题以解决我原来的问题。
我现在自己发现了:
boolean isDebug = java.lang.management.ManagementFactory.getRuntimeMXBean().
getInputArguments().toString().indexOf("jdwp") >= 0;
这将检查是否Java 调试线路协议使用代理。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)