如何知道我的代码在IDE中以"调试"模式运行?

Eri*_*ang 5 java

如何在"运行"模式下编写在"调试"模式下运行时不同的代码(例如在eclipse中调用为"Debug As Java Application")(例如在eclipse中调用为"Run as Java Application") )?例如,代码可以在"Debug As Java Application"时打印"Haha,您正在调试",但在"Run As Java Application"时不打印任何内容(我不想在调用main时附加任何args)有没有任何通用的方法可以在任何IDE下工作,比如eclipse,IntelliJ等?

Ale*_*exR 8

我已经实现了如下.我检查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)