c# - Java 是否像 C# 一样具有 'Debug' 和 'Release' 构建模式?

标签 c# java .net debugging release

在C#中,我们有两种构建项目的模式:DebugRelease,不知道Java是否有同样的东西。我正在使用 IntelliJ IDEA 作为 Java IDE,到目前为止,我还没有看到任何地方可以像在 VS IDE 中那样配置构建模式。

最佳答案

javac 
  -g                         Generate all debugging info
  -g:none                    Generate no debugging info
  -g:{lines,vars,source}     Generate only some debugging info

您可以选择在编译的类中包含调试符号(这是默认设置)或不包含。不这样做没有多大好处。 jar 文件将为 a little smaller ,但性能优势很小(如果有的话)。如果没有这些符号,您将无法在堆栈跟踪中获得行号。您还可以选择包含 additional symbols with local variable names (默认只有源文件名和行号)。

java
    -ea[:<packagename>...|:<classname>]
    -enableassertions[:<packagename>...|:<classname>]
                  enable assertions

您还可以在运行时启用断言(默认为关闭),这在开发和测试期间有时很有用。这确实会对性能产生影响(如果有问题的代码确实使用了断言,我认为是 uncommon)。

无论这些设置如何,JVM 始终允许您附加调试器。

Java 所没有的是条件编译,在这种编译中,将根据一些外部设置编译完全不同的代码。您可以得到的最接近的是 public static final boolean DEBUG_BUILD = true; 在代码中的某处并在 if 语句中使用它。这实际上会使编译器排除无法访问的代码,但您必须在源代码中设置此常量。

关于c# - Java 是否像 C# 一样具有 'Debug' 和 'Release' 构建模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8613535/

相关文章:

java - RX Java-使用 java var args 压缩 n 个 Observables

c# - VS 2017 : The security debugging option is set but it requires the Visual Studio hosting process which is unavailable

c# - 在循环中捕获异步错误

c# - 我怎样才能防止 "possible loss of fraction"?

c# - 尝试创建 Azure 服务总线队列时出现访问错误

c# - RSACryptoServiceProvider 在 Windows 上验证失败

javascript - 如何使用下拉列表触发 Jquery 函数?

java - C# 如何覆盖 LDAP 服务器限制,但 Java 不能

java - 将 JSON 设置为 EditText

java - 使用 jdbc 时的日志记录问题