BUG 调试方法 - ( 前提 : 心态 )
目录
1. 定位问题 ( 确定位BUG大方向 )
a. 用户访问项目 , 出现控制台的日志
i. 找到 cause by(如果有多个cause by,则有限看最后一个)
ii. 没有cause by,找日志中是否有自己写的类
iii. 错误日志中没有自己的类,80%是配置问题,20%传入到框架中的参数问题。
(开发环境需要看tomcat的日志,和项目的log4j日志)
启动项目就报错,看catalina.log
b. Tomcat 启动就报错
i. 一定是配置问题
1. 在Web.xml中梳理出所有的配置信息,包括spring配置。
2. Spring.xml问题
3. Mapper文件问题
c. 页面错误
i. 心理压力(页面东西多、我不懂)
ii. 找别人写的页面的BUG。可读性差。
1. Debug F12
2. 排除法 (前段页面bug的解决:写一个纯净页面(屏蔽无关代码),逐个测试排除)
iii. ajax bug (无非就是请求与响应)
1. 请求:400+错误码 (url问题、参数问题、请求头信息问题)。比如出现了500的错误,但是回调函数没有执行,大概率是配置出错。
2. 响应:500错误(一般是后台出bug。Ajax的回调函数也会执行)
2. 明确定位
a) cause by会有明确的问题原因(DEBUG定位)
b) 配置问题、页面问题、ajax。(都需要通过排除法来定位问题,精简代码的定位方式。类似将项目拆分为很多小块,一个个排除(细心))
3. 总结
a) Debug
b) 排除法
c) 生产环境(通过日志进行排除法解决问题)
案例:
项目启动报错。
查看tomcat安装目录下的logs文件夹下的catalina.log日志
收货:出现监听器启动失败。
查看web.xml
只有一个监听器,初始化spring容器的监听器。此监听器在解析spring.xml。
只要是spring解析问题,需要查看localhost.log日志。
Spring.xml没有
访问出错 (500错误)
查看tomcat的logs文件夹中的localhost.log日志。
案例中定位的问题是数据库连接失败。
1. Debug 经验之谈
1. 断点位置不能出现在开始位置、空白位置、else等 位置
2. 利用好 : System.out.println();
/ log.info();
2. 排除法 : 值钱的 bug
通过前两种方式无法定位的BUG才是值钱的bug
90%的错,用排除法;框架里只能用流程来找错
1、openSession报错,90%是数据库没连接好
2、IO异常:绝大多数是文件名称写错了
3、SQl异常:将对应SQL语句复制,到数据库里直接执行一遍
4、ClassNotFoundException
2种:缺包;
包冲突(版本冲突、升版本、降版本)
前两种都无法找的,用排除法:不是找BUG而是确认某部分没问题! 无法保证100%没问题,
F12、页面排除法 ( 想5分钟描述问题 )