在C#中,我们有两种方式构建项目:Debug和Release,我想知道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文件会稍微小一些 ,但性能优势是最小的(如果有的话)。 没有这些符号,您不再在堆栈跟踪中获取行号。 您还可以选择使用本地变量名称添加额外的符号 (默认情况下只包含源文件名和行号)。
java
-ea[:...|:]
-enableassertions[:...|:]
enable assertions
您还可以在运行时启用断言(默认为关闭),这在开发和测试期间有时是有用的。 这确实有一个性能影响(如果该代码确实使用了断言,我认为是不常见的 )。
无论任何这些设置,JVM总是允许您附加调试器。
什么Java没有的是条件编译,其中将根据一些外部设置编译完全不同的代码。 最接近的是public static final boolean DEBUG_BUILD = true;在你的代码的某处,并在if语句中使用它。 这实际上会使编译器排除变得无法访问的代码,但是您必须在源代码中设置此常量。