当开发人员使用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.html

每个Java开发人员应拥有的持久断点相关推荐

  1. java 断点_每个Java开发人员应拥有的持久断点

    java 断点 当开发人员使用Java进行工作时,即使您尝试调试其他内容,也总是会遇到一些失败的情况. 这是应该在每个IDE中启用的持久断点的列表. (恕我直言) 是的,从理论上讲,您应该能够从良好的 ...

  2. java不支持发行版本12_主要发行版本后Java开发人员应使用的15种工具

    java不支持发行版本12 新部署的生存工具包:适用于Java开发人员的工具,这些工具经常将代码部署到生产中! Takipi会检测生产中的所有错误,并像发生错误时一样显示变量值 立即部署并获得免费的T ...

  3. 主要版本发布后Java开发人员应使用的15种工具

    新部署的生存工具包:适用于Java开发人员的工具,这些工具经常将代码部署到生产中! Takipi会检测生产中的所有错误,并像发生错误时一样显示变量值 立即部署并获得免费的T恤 适用于新部署的终极生存套 ...

  4. Java开发人员应了解的JVM流行语

    本文将与您分享一些JVM"流行语",它们对于Java开发人员在执行任何JVM性能和垃圾回收调优之前理解和记住非常重要. 本文末尾还提供了一些技巧,包括一些高级性能调优最佳实践. 将 ...

  5. java开发错误_每个Java开发人员都必须避免的9个安全错误

    java开发错误 Checkmarx CxSAST是功能强大的源代码分析(SCA)解决方案,旨在从根本上识别,跟踪和修复技术和逻辑安全漏洞:源代码. 在这里查看 ! 自从1995年中期引入Java以来 ...

  6. 每个Java开发人员都必须避免的9个安全错误

    Checkmarx CxSAST是功能强大的源代码分析(SCA)解决方案,旨在从根本上识别,跟踪和修复技术和逻辑安全缺陷:源代码. 在这里查看 ! 自从1995年中期引入Java以来​​,它已经走了很 ...

  7. Java开发人员应该知道的三件事

    对于那些长期关注JavaOne 2012会议的读者来说,这是一篇有趣的文章. 我最近对Java冠军Heinz Kabutz的采访引起了我的注意: 包括他的Java内存难题程序,从Java内存管理的角度 ...

  8. java开发遵循的原则_Windows开发人员应遵循Java社区稳定的基础结构和开发环境,而不必大肆宣传

    java开发遵循的原则 在1990年代,当Java开始出现在开发人员场景中时,它就迎来了来自微软的竞争,因为它努力在国际开发社区中赢得一席之地. 但是,多年来,Java似乎已经达到了比Microsof ...

  9. java 开发 jvm_Java开发人员应了解的JVM流行语

    java 开发 jvm 本文将与您分享一些JVM"流行语",它们对于Java开发人员在执行任何JVM性能和垃圾回收调优之前理解和记住非常重要. 本文末尾还提供了一些技巧,包括一些高 ...

最新文章

  1. 查看redis版本_redis详细介绍
  2. 检测到磁盘可能为uefi引导_Win10创意者无法更新提示“磁盘布局不受uefi固件支持”怎么办?...
  3. jq php上传图片插件,ajaxImageUpload
  4. 2018年,这100家AI公司值得关注!CB Insights选出AI 100第二季
  5. android 远程下载与pull解析技术
  6. css整理-03 文本
  7. Typora Beta版过期解决
  8. python采用强制缩进的方式使得代码具有极佳的可读性_计算机专业高级语言程序设计课程改革探索...
  9. SNN综述(1):深度脉冲神经网络
  10. 安装计算机的显卡出现问题,电脑显卡驱动安装失败如何解决
  11. 身份证如何扫描成电子版?这个方法很好用
  12. bootstrap-table表格排序问题
  13. Tensorboard报错的解决
  14. DB-Engines发布了2017年9月数据库排名。
  15. linux实验二文件与文件夹操作
  16. 计算机二级系统班C语言讲义,计算机二级C语言讲义8
  17. 走进小程序【三】小程序代码构成
  18. 我的同事妹妹深夜来我家问我MyBatis源码解析,我是这样给她讲的
  19. 云南工程职业学院计算机网址,云南工程职业学院欢迎您(2020)
  20. 《Who moved my cheese?》笔记

热门文章

  1. 处理api返回的数据_API 乐队指挥家,网关服务正式上线
  2. ubuntu安装python3.8_Ubuntu 16.04 安装 python3.8
  3. apache ignite_Kubernetes集群上的Apache Ignite和Spring第1部分:Spring Boot应用程序
  4. throwable_您想了解的所有Throwable
  5. jdk8 npe_JDK 14中更好的NPE消息
  6. spring react_使用Spring Cloud Gateway保护React式微服务
  7. hibernate 标识符_Hibernate中的标识符
  8. java使用迭代器删除元素_使用Java从地图中删除元素
  9. 创建react应用程序_使用SpringWebFlux的React式Web应用程序
  10. 安装openstack_午餐前如何安装OpenStack Cloud