如何在"运行"模式下编写在"调试"模式下运行时不同的代码(例如在eclipse中调用为"Debug As Java Application")(例如在eclipse中调用为"Run as Java Application") )?例如,代码可以在"Debug As Java Application"时打印"Haha,您正在调试",但在"Run As Java Application"时不打印任何内容(我不想在调用main时附加任何args)有没有任何通用的方法可以在任何IDE下工作,比如eclipse,IntelliJ等?
我已经实现了如下.我检查JVM参数并寻找一个-Xdebug.请参阅代码.
private final static Pattern debugPattern = Pattern.compile("-Xdebug|jdwp");
public static boolean isDebugging() {
for (String arg : ManagementFactory.getRuntimeMXBean().getInputArguments()) {
if (debugPattern.matcher(arg).find()) {
return true;
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
它适用于我,因为eclipse执行被调试为独立进程的应用程序并使用JDI(Java调试接口)连接到它.
我很高兴知道这是否适用于其他IDE(例如IntelliJ)