本问题已经有最佳答案,请猛点这里访问。

例如,我有一个像这样的堆栈跟踪:

java.lang.NullPointerException

abc.investxa.presentation.controllers.UnixServerJobController.handleRequest(UnixServerJobController.java:66)

org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)

org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)

org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:807)

org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)

org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:501)

javax.servlet.http.HttpServlet.service(HttpServlet.java:690)

javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)

org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)

那么这个例外的根本原因是什么?

从堆栈跟踪中,我发现OncePerRequestFilter类中的doFilter函数存在问题! 但是,当我在那里设置一个断点时,程序永远不会停在那个断点处。

谁能解释一下这个!?

在一般情况下,我应该如何使用该堆栈案例进行调试(从下到上或从上到下阅读)!

您通常应该从顶部读取 - 所以在这种情况下,UnixServerJobController的第66行在handleRequest方法中存在NullPointerException。该方法由SimpleControllerHandlerAdapter.handle调用,由DispatcherServlet.doDispatch调用。

但是,在这种特殊情况下,堆栈跟踪的第一帧可能就是您所需要的。查看UnixServerJobController的第66行,找出可能为null的内容,并采取相应措施。

请注意,有时一个异常包含在另一个异常中(也可能包含在另一个异常中,等等)。在这种情况下,您应该查看每个堆栈跟踪 - 通常它是"最嵌套"的异常,它提供了最有用的信息,因为这是根本原因。

"可能是堆栈跟踪的第一帧是你需要的所有",除非由于你提供了错误的参数集而引发了异常。

当异常被包装并重新抛出时,导入行将隐藏在中间

@JanDvorak:我指的是这个特殊的堆栈跟踪 - 会更清楚。

@TomaszNurkiewicz:是的,也会添加相关信息。

嗨乔恩,我一直很羡慕你。当你回答我的问题时,这很棒。 :d

通过"最嵌套",你的意思是最下面的那个?

@JoshBjelovuk:是的 - 真正引起这一切的那个。

通常,Exception的确切原因位于Stack Trace的第一行,有关该异常原因的更多信息,您需要逐渐向下移动,并且通常可以在靠近底部的某处找到根本原因。堆栈跟踪。

但在大多数情况下,您甚至可以从前几行获得异常原因。

所以,在这种情况下,你的异常是在handleRequest方法,当你向下移动时,那些是调用你以前的方法的方法(堆栈跟踪中当前方法之上的方法)

选民可以评论我错在哪里吗?

在企业java中,调用堆栈的底部通常是库函数,并不值得研究。

@JanDvorak ..可能是因为它不经常需要调查,但它是root原因对吗?所以,我说错了?

如果你想为所有员工的错误而受到指责,那么是的,图书馆是错的:-)

@JanDvorak ..好的。我认为..我编辑了帖子说 - somewhere near bottom ..你的情况可以证明它是合理的吗?

@JanDvorak ..如果我的修改后的帖子看起来没问题,你可以切换你的投票吗?或者,我希望你再解释一下,这样我就能更好地理解它并且更清楚......

从堆栈跟踪中可以看出,库中有9个堆栈帧,只有顶部框架是用户函数(可能会受到指责)。通常情况是原因接近顶部。

@JanDvorak好..谢谢你的解释..

"接近底部"并非如此。"往往靠近底部"可能会被淹没。"可以接近底部"当然是正确的,但并不能说明多少。

你的答案仍然要求责备doFilter。它肯定不是。

@JanDvorak ..谢谢Jan ..我已经相应地编辑了我的帖子..

最后一段没有多大意义。无论如何撤回;-)

@JanDvorak ..谢谢:)

这里也是一个非常有用的链接,了解如何从异常中读取堆栈跟踪:nurkiewicz.com/2011/09/logging-exceptions-root-cause-first.html

本教程可能会对您的问题有所了解,并帮助您更好地理解问题。

根据您的问题,您似乎在Unix服务器作业控制器类的第66行有一个空指针异常。

哦,太棒了,本教程是我正在寻找的,谢谢:D

谢谢你的链接

我发现本教程对我非常有用

https://forums.bukkit.org/threads/how-to-read-stack-traces-and-troubleshoot-your-own-plugins-by-yourself.32457/

这基本上只是一个链接答案,这几乎不是一个好主意。 (例如,如果删除链接页面,则完全无用。)您至少应该引用帖子中最重要的部分。

java调试查看调用堆栈_关于调试:如何阅读和理解java堆栈跟踪?相关推荐

  1. java如何查看调用记录_查看Java记录

    java如何查看调用记录 JEP 359 (可在JDK 14中用作预览功能)将记录引入Java. 记录是对普通数据聚合建模的简单方法. 一个简单的范围记录如下所示: record Range( int ...

  2. java主程序怎样调用子程序_存过和函数以及在Java程序中的调用

    存储过程,函数都是数据库的对象. 创建和调用 存储在数据库中的子程序,是由plsql语言写的,完成特定功能的程序. 函数可以返回值,存过不能返回值.除此之外,一致. create procedure ...

  3. java 写文件 权限不够_教你解决Linux系统中JAVA创建文件后权限不足的问题

    在作业中,项目使用文件上传. 这个功能很常见. 当Kai Ge今天更改其官方帐户时,他遇到了一个问题,即无法访问下载的文件,也无法通过浏览器访问该文件. 它是怎么发生的? 经过许多问题之后,事实证明这 ...

  4. vconsole 调试 查看LOG VUE在手机上调试 手机查看h5的日志

    简单介绍下vConsole: vConsole是一个由微信公众平台前端团队研发的web前端开发者面板,可用于展示console日志,方便开发.调试. 使用场景1,在vue-cli 构建的项目中使用: ...

  5. java为何重复调用方法_通过反射调用Java中的getter:重复调用它的最快方法是什么(在性能和可伸缩性方面)?...

    小编典典 您可以使用MethodHandle.其Javadoc写道: 使用Lookup API中的工厂方法,可以将Core Reflection API对象表示的任何类成员转换为行为等效的方法句柄.例 ...

  6. java技术全掌握了_你必须掌握的 21 个 Java 核心技术!

    写这篇文章的目的是想总结一下自己这么多年来使用java的一些心得体会,希望可以给大家一些经验,能让大家更好学习和使用Java. 这次介绍的主要内容是和J2SE相关的部分,另外,会在以后再介绍些J2EE ...

  7. java退出不报异常_如何优雅的处理异常(java)?

    这篇文章应该可以解答你的疑问. Java中异常提供了一种识别及响应错误情况的一致性机制,有效地异常处理能使程序更加健壮.易于调试.异常之所以是一种强大的调试手段,在于其回答了以下三个问题:什么出了错? ...

  8. java list有序还是无序_牛批!2w字的Java集合框架面试题精华集(2020最新版),赶紧收藏。...

    一个多月前,作者和一些小伙伴决定做一系列的 Java 知识点常见重要问题的小册,方便用来夯实基础!小册的标准就一个,那就是:取精华,取重点.每一本小册,我们都会充分关注我们所总结的知识点是否达到这个标 ...

  9. java 笔试题一套_软世通分享一套Java笔试题

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 7.以下程序段执行后的K值为( ). int x=20; y=30; k=(x>y)?y:x A. 20 B. 30 C.10 D.50 8.要想定 ...

  10. java读写德卡数据_深圳德卡D3-U读写卡器windows(Java),linux(C)驱动开发 | 学步园

    在D3的Java文件夹下有文件夹两个:classpackage.example,文件一个:readme.txt. classpackage中的 javaRD800.dll 是一个面向Java JNI ...

最新文章

  1. 施一公:年轻人不要花时间去拉关系,尽全力做研究,以实力取胜!
  2. [数分提高]2014-2015-2第4教学周第2次课
  3. BCH生态:用价值创造价值
  4. 并发编程之对象的发布和逸出
  5. AndroidManifest.xml文件剖析
  6. SQLServer表内自关联级联删除
  7. springboot MVC视图解析流程源码分析
  8. java mp4 视频时间戳_MP4文件中音视频时间戳的计算
  9. wordpress4.9服务器迁移
  10. 支持Dubbo生态发展,阿里巴巴启动新的开源项目 Nacos
  11. 关于java.lang.ClassNotFoundException
  12. Roll A Ball 案例学习
  13. 使用阿里云加速器 配置 Docker 镜像加速器
  14. android微信表情导出来的,微信表情怎么导出 如何批量备份微信表情
  15. 微信表情存入mysql
  16. 计算机两个活动分区,硬盘无法设置活动分区,硬盘只能有一个活动分区吗
  17. ansys linux卸载干净,怎么把ansys删除干净
  18. 快速了解Mybatis Plus 的用法以及使用举例
  19. Python 后台启动程序
  20. 查找和排序-——旋转数组的最小数字

热门文章

  1. 华中数控808系统说明书_智能制造之高端数控系统龙头
  2. jclasslib 查看类信息
  3. matlab 电流平均值,电流平均值谐波检测方法MATLAB仿真
  4. 华南技术盛会:BingoDay2017今在天河人才港盛大举行
  5. PHP折算,PHP实现货币换算的方法
  6. ADC 外电阻分压种种
  7. 吴恩达深度学习教程参考链接
  8. Tensorflow2.0 之 SSD 网络结构
  9. 科技爱好者周刊:第 103 期
  10. Agisoft Photoscan/Mateshape 相机参数XML解读