如何快速定位并修复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?其实只是想提前给你一个印象,这里有一篇博文教怎么分析异常。希望你用不到,但不可能,不踩坑怎么学的会东西?遇到了异常再根据这里的方法去分析和解决即可。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
本课程详细讲解了以下内容:    1.jsp环境搭建及入门、虚拟路径和虚拟主机、JSP执行流程    2.使用Eclipse快速开发JSP、编码问题、JSP页面元素以及request对象、使用request对象实现注册示例    3.请求方式的编码问题、response、请求转发和重定向、cookie、session执行机制、session共享问题     4.session与cookie问题及application、cookie补充说明及四种范围对象作用域     5.JDBC原理及使用Statement访问数据库、使用JDBC切换数据库以及PreparedStatement的使用、Statement与PreparedStatement的区别     6.JDBC调用存储过程和存储函数、JDBC处理大文本CLOB及二进制BLOB类型数据     7.JSP访问数据库、JavaBean(封装数据和封装业务逻辑)     8.MVC模式与Servlet执行流程、Servlet25与Servlet30的使用、ServletAPI详解与源码分析     9.MVC案例、三层架构详解、乱码问题以及三层代码流程解析、完善Service和Dao、完善View、优化用户体验、优化三层(加入接口和DBUtil)    1 0.Web调试及bug修复、分页SQL(Oracle、MySQL、SQLSERVER)     11.分页业务逻辑层和数据访问层Service、Dao、分页表示层Jsp、Servlet     12.文件上传及注意问题、控制文件上传类型和大小、下载、各浏览器下载乱码问题     13.EL表达式语法、点操作符和中括号操作符、EL运算、隐式对象、JSTL基础及set、out、remove     14.过滤器、过滤器通配符、过滤器链、监听器     15.session绑定解绑、钝化活化     16.以及Ajax的各种应用     17. Idea环境下的Java Web开发

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IMplementist

你的鼓励,是我继续写文章的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值