泛微网络科技有限公司,上海专业的seo公司,推广软件平台排行榜,docker启动wordpressjava 断点当开发人员使用Java进行工作时#xff0c;即使您尝试调试其他内容#xff0c;也总是会遇到一些失败的情况。 这是应该在每个IDE中启用的持久断点的列表。 #xff08;恕我直言#xff09; 是的#xff0c;从理论上讲#xff0c;您应该能够从良好的日志记录实现… java 断点 当开发人员使用Java进行工作时即使您尝试调试其他内容也总是会遇到一些失败的情况。 这是应该在每个IDE中启用的持久断点的列表。 恕我直言 是的从理论上讲您应该能够从良好的日志记录实现中获得此信息。 但是这些问题通常是由于无法控制的更改而在其他人的库中深层隐患……或隐藏在大量当前正在执行的线程中。 如今Java在调试模式下运行没有太多开销通常在没有附加调试器的情况下我永远不会运行我正在处理的任何事情因为HotSwap可以大大提高生产率。 我很想知道其他人必须有断点。 它们应该是您永远想知道的故障这些故障永远不会出现在应用程序的正常运行中。 死锁检测 VM在识别来自低级Java合约的死锁方面越来越好调试器应该可以选择打破死锁。 您应该确保默认情况下将其打开。 在java.lang.ExceptionInInitializer上 进行跟踪可能是一件很痛苦的事情因为在更深的一层它可能会变成ClassNotFoundException并且通常如果下降了多个级别则没有明显的原因可以使间接引用类无法加载。 通常是由于人们使用引发RuntimeExceptions的方法/构造函数初始化公共/最终/静态变量。 如果不确定使用具有正确错误处理的static {}块请不要在其中执行依赖于当前jar文件外部内容的操作。 在java.lang.NoClassDefFoundError上 在OSGi中工作时总是很流行通常您忘记了一个依赖的jar文件并且看到这种类型的故障。 有趣的是有时您只会在特定类的第一次抛出此异常时才找到原因。 因此如果您有断点则可以更快地进行跟踪。 我发现有时在某些反射代码后面没有遇到断点。 在那种情况下我经常在此类的构造函数中有断点以确保。 在java.lang.NoSuchMethodError上 如果您在本地未正确构建或者您使用的是错配版本的库那么您当然通常会看到此信息。 您总是想知道这一点。 在java.lang.LinkageError上 通常只有在情况确实变糟时才出现这种情况例如当您挂起同一个类的两个版本即使它们来自同一个jar文件时。 必须爱多级装载机值得庆幸的是这些装载机不会经常出现通常是在我已经非常头痛的时候进行。 关于java.lang.OutOfMemoryError / java.lang.StackOverflowException 如果您很幸运VM会为此中断。 但是不幸的是由于很多时间会发生在本机代码中因此您只需要处理这些后果。 为后者获取完整的堆栈有点麻烦。 但并非不可能。 有关获取完整堆栈跟踪的信息请参见此较早的文章。 在java.lang.AssertionError上 数量惊人的人使用断言然后在调试或运行测试时抱怨异常时感到不高兴。 您正在使用-ea执行此操作对吗 缺点是您想在调试某些测试框架时将其关闭我正在查看您的JUnit因为当您只想运行所有测试时碰到断点并没有完全帮助。 最后我会不时地遍历以下代码这将导致一个异常仅用于测试是否启用了断言。 boolean assertionsEnabled false;try{ assert false; }catch (AssertionException ae){ assertionsEnabled true } 更新一位乐于助人的同事指出我应该就应替换此代码提供一些替代建议。 第一种选择是调用Class.desiredAssertionStatus但如果要完全确定可以使用以下代码该代码使用赋值来捕获断言状态而不会引发异常。 boolean assertionsEnabled false;assert isAssertionsEnabled true; 参考 Gerard Davison博客博客中 每个Java开发人员都应从我们的JCG合作伙伴 Gerard Davison获得持久性断点 。 翻译自: https://www.javacodegeeks.com/2013/05/persistent-breakpoints-every-java-developer-should-have.htmljava 断点