顶部右侧
顶部左侧
当前位置:首页 > 编程语言 > Java > 正文

java语言推翻假设(java 类型推断)

bsmseo 发布于2024-04-29 19:45:50 Java 11 次

大家好,今天小编关注到一个比较有意思的话题,就是关于java语言推翻假设的问题,于是小编就整理了1个相关介绍java语言推翻假设的解答,让我们一起看看吧。

  1. Java程序出错了,定位错误有哪些技巧?

Java程序出错了,定位错误有哪些技巧?

1.概述

java语言推翻假设(java 类型推断)
(图片来源网络,侵删)

在本教程中,我们将研究一些高级IntelliJ调试工具。假定大家已了解调试基础知识(如何开始调试,Step Into,Step Over 操作等)。如果不是,请参考本文以获取更多详细信息。

2.Smart

java语言推翻假设(java 类型推断)
(图片来源网络,侵删)
Step Into

在某些情况下,会在一行源代码上调用多个方法,例如 doJob(getArg1(),getArg2())。如果调用单步执行(F7),则调试器将按照JVM用于评估的顺序进入方法: getArg1 – getArg2 – doJob。

但是,我们可能要跳过所有中间调用,然后直接进入目标方法。聪明的步入行动可以做到这一点。

java语言推翻假设(java 类型推断)
(图片来源网络,侵删)

默认情况下,它绑定到Shift + F7,并且在调用时如下所示:

现在我们可以选择目标方法。另外,请注意,IntelliJ始终将最外面的方法放在列表的顶部。这意味着我们可以通过按Shift + F7 | 输入。

3.Drop Frame

我们可能意识到,我们感兴趣的某些处理已经发生(例如,当前方法参数的计算)。在这种情况下,可以丢弃当前的JVM堆栈框架以对其进行重新处理。

请考虑以下情况:

假设我们有兴趣调试getArg1处理,因此我们删除当前帧(doJob方法):

现在我们处于先前的方法中:

但是,此时调用参数已经计算完毕,因此,我们还需要删除当前帧:

现在,我们可以通过调用Step Into重新运行该处理。

4.当前断点

有时,非私有字段是由其他类修改的,而不是通过setter修改的,而是直接修改的(第三方库就是这种情况,我们不控制源代码)。

在这种情况下,可能很难理解何时进行修改。IntelliJ允许创建字段级断点来跟踪。

它们像往常一样设置–左键单击字段行上的左侧编辑器装订线。之后,可以打开断点属性(在断点标记上单击鼠标右键)并配置我们是否对字段的读取,写入或两者感兴趣:

5.记录断点

有时我们知道应用程序中存在竞争条件,但不知道它到底在哪里。要确定它可能是一个挑战,尤其是在使用新代码时。

我们可以将调试语句添加到程序的源代码中。但是,第三方库没有这种功能。

IDE可以在这里提供帮助- 它允许设置断点,这些断点一旦被击中就不会阻止执行,而是产生日志记录语句。

假设我们有兴趣记录实际的 isInterested 调用的参数。

让我们在目标方法中创建一个非阻塞断点(Shift +左键单击左编辑器装订线)。之后,让我们打开其属性(在断点上单击鼠标右键)并定义要记录的目标表达式:

6.创建标记

当应用程序在断点处停止并且可以从堆栈帧访问目标时,可以标记对象。选择它,然后按F11(“ 标记对象”操作)并定义目标名称:

7.结论

我们检查了许多在调试多线程应用程序时可以大大提高生产率的技术。这通常是一项艰巨的任务,所以在这里我们不能低估工具帮助的重要性,毕竟不是在写Bug的路上就是在改Bug的路上(手动狗头)。

定位错误最普遍的方式就是日志分析,姑且不谈是代码的运行环境(生产、测试、本地)。

这个问题可以暂时理解为通过日志定位错误有哪些技巧?

1、日志分类一定要做,分类的维度有很多种,登录型的,权限型的,业务型的,数据库操作的等等。

2、打印日志要完全,时间,类名,详细的错误堆栈信息,还可以加上一些关键参数值,因为错误有时候不一定是崩溃日志,也有可能是业务异常,这些关键参数值能给你分析业务带来有效的指引。

3、对于分布式系统可以考虑上ELK日志分析系统。ELK日志系统介绍:

ELK分别是Elasticsearch、Logstash、Kibana三个开源框架缩写。

Elasticsearch:开源分布式搜索引擎,提供存储、分析、搜索功能。特点:分布式、基于reasful风格、支持海量高并发的准实时搜索场景、稳定、可靠、快速、使用方便等。它可以接收搜集的海量结构化日志数据,并提供给kibana查询分析

Logstash:开源日志搜集、分析、过滤框架,支持多种数据输入输出方式。用于收集日志,对日志进行过滤形成结构化数据,并转发到elasticsearch中

Kibana:开源日志报表系统,对elasticsearch以及logstash有良好的web页面支持。

一个简单的ELK应用架构图:

图来网,侵删。

4、补充一点心得之谈,出错了以后静下心来仔细思考为什么出现错误,最好的解决和最快的解决方式都有什么,主动给出方案建议利弊,会很出彩。

到此,以上就是小编对于java语言推翻假设的问题就介绍到这了,希望介绍关于java语言推翻假设的1点解答对大家有用。

查看更多有关于 的文章。

转载请注明出处:http://www.zeshunjixie.com/post/61107.html

[免责声明]本文来源于网络,不代表本站立场,如转载内容涉及版权等问题,请联系邮箱:83115484@qq.com,我们会予以删除相关文章,保证您的权利。
最新文章
热门文章
网站分类
最新留言