如何快速定位并修复Bug


前提

一直以来,我都觉得如何调试程序才应该是学习编程的第一节课。因为我见到很多初学者,如果根据教程写的顺利还好,一旦出现了Bug,就会手足无措。为什么跑不通?怎样才能让它跑通?一概不知。


一、本文中所要用到的bash命令

  1. pwd:获取当前所在目录的绝对路径
  2. cd:进入/退出文件夹
  3. ls:显示当前文件夹中的所有文件、文件夹名称
  4. vim:文本编辑和浏览工具

二、查询日志文件

tomcat日志

在%TOMCAT_HOME%/logs文件夹下存放着tomcat服务器的运行日志,程序的运行日志一般在localhost.YYYY-MM-DD.log文件中,查找哪天的日志就按照日志查看即可。

例如2020/11/06,我们的程序没有正常返回登录成功或失败的响应,我们就要去localhost.2020-11-06.log中去查看运行日志。

vim localhost.2020-11-06.log进入浏览模式,浏览日志文件。

具体的异常日志信息
日志中重要的信息有以上红色框圈出的四个部分

  • 时间点:时间点对应你执行测试的时间。
  • 路径:标明请求中的路径,如果同时部署了多个Web应用程序,可以以此区分。
  • 异常类型:表明发生了哪种异常(示例中是空指针异常)。
  • 异常发生的调用栈:具体到哪个类的那个方法的哪一行抛出了异常,位置越靠上越是调用发生的底层,也即异常逐层抛出的起始位置。

看完了日志文件,我们退出vim编辑器:
输入:q,按下Enter键。

三、反查代码

从日志文件中,我们知道了是UserDAO类的queryUser方法的第33行抛出了一个NullPointerException,即空指针异常。此时,经过查询我们知道了,空指针异常一般是由于我们在代码中对null引用其成员造成的。既可能是本方法内创造出来的null,也可能是方法入口没做检查,接受了上一层调用方法传入的null。

由此,我们便可以去代码中相应的位置查看,具体是什么原因导致了程序抛出空指针异常。


后记

就像司机,如果开车前就懂一些故障检修的知识,车坏在半路上就不会惊慌失措,而可以快速判断问题所在,然后对症下药了。看到这里,有人可能迷糊了:我还没开始写程序呢,你就教我怎么找bug?其实只是想提前给你一个印象,这里有一篇博文教怎么分析异常。希望你用不到,但不可能,不踩坑怎么学的会东西?遇到了异常再根据这里的方法去分析和解决即可。

猜你喜欢

转载自blog.csdn.net/Mr_Megamind/article/details/109575633