Java程序如何确定它是否在调试模式下运行?
应用程序在常规"全速"模式下的行为应与"调试模式"(在附加调试器时,在调试模式下运行时)略有不同.应用程序通过TCP与另一台计算机,另一个进程或其自身进行通信.我的同事希望我们Socket.setSoTimeout(1000)默认使用,以便从套接字读取最多可以阻止1秒钟.调试时,这当然是不够的,应用程序停止工作.所以解决方案是设置SO_TIMEOUT更高,但只是在调试模式(例如:无限制).现在,我并不总是设置断点或者不想使用调试构建,我可以自己设置"debug"属性.有时我会附加调试器(远程调试).我主要使用Eclipse,所以在那里工作的解决方案是可以的.
可能的答案包括:
要确定是否在调试模式下运行,请使用以下方法java.lang.management.*或javax.management.*...
您的同事因X原因错误SO_TIMEOUT,默认情况下您不应设置为1秒.
我知道系统属性方法,但我将问题留待解决我原来的问题.
我想改变日志记录级别,具体取决于我是否正在进行调试,但是我找不到代码片段来检查应用程序是否在调试模式下运行.
我正在使用eclipse来调试应用程序,所以如果解决方案只能在Eclipse中运行,那就没问题了.
如果调试器附加到当前测试执行,有没有办法检查 JUnit 代码?
在 .NET/C# 中,我知道这可以通过Debugger.IsAttached.
用例是在连接调试器时更改或完全禁用测试超时,因为如果您只有大约 15 秒(定义的超时)来调试测试,这会很烦人。
有没有办法从运行/调试的 Java 代码中检查我们是否正在 Intellij IDEA 调试器中运行?