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

时间:2011-09-13 06:17:11

标签: java

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

2 个答案:

答案 0 :(得分:7)

我已将此实现如下。我检查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;
}

它适用于我,因为eclipse执行被调试为独立进程的应用程序并使用JDI(Java调试接口)连接到它。

我很高兴知道这是否适用于其他IDE(例如IntelliJ)

答案 1 :(得分:1)

这些模式之间的区别在于,在 debug 模式下,IDE将通过调试器(通常通过二进制套接字)连接到刚刚执行的应用程序。附加调试器允许IDE发现被击中的断点,抛出异常等。这不会发生在正常模式中。

没有标准且易于使用的方法来区分调试和普通模式与Java代码。