bug 查找 (二) 从前端找到后端

几天来,组长说我们系统的 apm 数据不正确,最体表现就是前端项目这几天错误统计为 0。

这不正常(没有办法,我们代码写的很烂),因为前端环境很复杂,网络,浏览器都有可能出现错误,一天 100 多错误也是正常。

WebAPM 也是由我来写的,于是开始找 bug 之旅。

过程

  1. 因为代码是我写的,我在了解到问题的情况下,问了下线上环境是否有变化,回答是否定的,没有改;上线新功能没,回答也是没有上线新功能,只能定位到是自己写代码的问题。

  2. 找到与问题相关的代码了一下,(这个是谁写的代码),完全没有看懂,花去一些时间去熟悉代码,一上午就过去了

  3. 光看代码没有找到问题,下午要起动程序进行调试,分别是 nginx , 前端项目,后端项目,webapm 项目启来,发现 onerror 没有加载错误

  4. 然后找到代码查看,发现开发模式下,window.onerror 需要对脚本进设置成 crossorigin 才能抓到 url。以为找到了问题,这个问题自己也找了一段时间。这个不是 bug 在生产环境下已经打开。

  5. 然后找到 cookie 发现是通过 cookie 进行数据的保存的。发现 cookie 没有设置成主域名而是在 www 下,以为因为读不到,所以没有发,结果代码测式,可以发。

  6. 然后再到控制台进行模拟出错,然后提交,发现是可以的。

  7. 多次尝试发现数据库报错,某个字段报错。

  8. 组长才想起来运维组把数据库升级了,数据库升级了,数据库升级了。

  9. 然后解决问题,mysql 在旧版本时,字段类型是数字,你写入数据时可以写入空。但是新版不可以了。所以我们写入写入一个默认值 0.

解决问题总结

一天就解决这一个 bug,现在晚上进行一个总结和反思:

  1. 出现了问题,光凭看代码,没有想第一时间复现问题。这是自己的问题,虽然环境挺复杂,但也不是不能配。

  2. 基础知识不扎实,对 onerror 的作用范围不明确,对 cookie 的读写也不明确,导致错误查找很慢。

  3. 动手能力弱,碰到问题,总是希望不启动环境去解决问题。以后如果环境复杂就要想到如何去简化环境,然后复现问题。

  4. 问题还是在与组长的配合中解决的,组长的动手能力让我佩服。

  5. 现在想想,这个问题在本地架起了环境也解决不了问题,因为本地数据库与以前是一致的,跟线上是不一致的。

  6. 其实有很多机会去解决这个bug的,都没有抓住,在线上写数据时,日志太多没有抓到这条错误,而我们最后构造请求然后马上去看就发现了这个错误。

  7. 还是有很多的知识盲点没有学到,这要加油去学。

bug 查找 (二) 从前端找到后端的更多相关文章

  1. bug是前端还是后端

    分析bug是前端还是后端的   如何分析一个bug是前端还是后端的? 平常提bug的时候,前端开发和后端开发总是扯皮,不承认是对方的bug这种情况很容易判断,先抓包看请求报文,对着接口文档,看请求报文 ...

  2. 分析bug是前端还是后端的

    如何分析一个bug是前端还是后端的? 平常提bug的时候,前端开发和后端开发总是扯皮,不承认是对方的bug 这种情况很容易判断,先抓包看请求报文,对着接口文档,看请求报文有没问题,有问题就是前端发的数 ...

  3. 如何查看bug属于前端还是后端

    1.F12下如何查看bug属于前端还是后端?前后端分离的项目,通过ajax向后端请求数据,如果后端返回的数据有问题,那么问题就是候选,如果返回的数据没有问题,但是展示结果异常那么问题一般就出在前端. ...

  4. [转载]Web前端和后端之区分,以及面临的挑战

    原文地址:Web前端和后端之区分,以及面临的挑战[转]作者:joyostyle 在我们实际的开发过程中,我们当前这样定位前端.后端开发人员. 1)前端开发人员:精通JS,能熟练应用JQuery,懂CS ...

  5. Web前端和后端之区分,以及…

    原文地址:Web前端和后端之区分,以及面临的挑战[转]作者:joyostyle 在我们实际的开发过程中,我们当前这样定位前端.后端开发人员. 1)前端开发人员:精通JS,能熟练应用JQuery,懂CS ...

  6. [转载]Web前端和后端之区分,以及面临的挑战【转】

    原文地址:Web前端和后端之区分,以及面临的挑战[转]作者:joyostyle 在我们实际的开发过程中,我们当前这样定位前端.后端开发人员. 1)前端开发人员:精通JS,能熟练应用JQuery,懂CS ...

  7. Spring Boot +Vue 项目实战笔记(二):前后端结合测试(登录页面开发)

    前言:关于开发环境 每位 Coder 都有自己偏好的开发工具,从大的方面划分主要有文本编辑器流和 IDE 流两种,我有一段时间也喜欢用编辑器(Sublime Text.Vim),但对我来说开发效率确实 ...

  8. 系统架构:Web应用架构的新趋势---前端和后端分离的一点想法

    最近研究servlet,看书时候书里讲到了c/s架构到b/s架构的演变,讲servlet的书都很老了,现在的b/s架构已经不是几年前的b/s架构,其实b/s架构就是web应用开发,对于这样的架构我们现 ...

  9. 看完让你彻底理解 WebSocket 原理,附完整的实战代码(包含前端和后端)

    1.前言 最近有同学问我有没有做过在线咨询功能.同时,公司也刚好让我接手一个 IM 项目.所以今天抽时间记录一下最近学习的内容.本文主要剖析了 WebSocket 的原理,以及附上一个完整的聊天室实战 ...

随机推荐

  1. IntelliJ IDEA 2018 设置代码提示对大小写不敏感

    setting->Editor->General->Code Completion取消勾选Match case

  2. ftp连接服务器失败||或者Xshell链接错误:Could notconnect to '192.168.18.128' (port 22): Connection failed

    有时候刚装完虚拟机发现xshell连接失败,或者使用ftp连接失败.(博主用的是unbuntu,其他linux系统可能在命令上稍有差别,但方法是一样的. xshell连接失败: ftp连接失败: 首先 ...

  3. OTL之Oracle开发总结《转》

    OTL之Oracle开发总结---转   关 于OTL,网上介绍的也不少,但看来看去也只是官方的那些文档.OTL很好用,结合官方提供的一些例子,多多尝试才能领悟.经过一个月左右的项目开发,对 OTL也 ...

  4. Winform中ComBox大小设置

    combox,listview等一些控件的外观会由于字体大小的改变而改变.修改字体的大小宽度自动变化

  5. linux 中的局部变量、全局变量、shell 变量的总结

    系统局部变量和全局变量  一.变量分类局部变量和环境变量,局部变量只适用于当前shell,而环境变量是全局的,它适用于所有当前shell以及其派生出来的任意子进程,有些变量是用户创建的,其他的则是专用 ...

  6. samba 安装运行

    samba 安装步骤 1.若之前有安装过相关软件包,先卸载之:sudo apt-get autoremove samba samba-commonsudo apt-get autoremove sys ...

  7. Ubuntu下使用gcc编译c文件,未识别cos,sin

    Ubuntu下使用gcc编译c文件,虽然我调用了math.h的头文件,但是未识别cos,sin 报错:( fft.c ) /tmp/ccwXjD8C.o: In function `fft': fft ...

  8. windows: Python安装scipy,scikit-image时提示"no lapack/blas resources found"的解决方法

    解决方案: 最后,解决我遇到的这个问题的解决方案是来自以下链接的答案: http://www.voidcn.com/blog/z6491679/article/p-5740396.html. 另外还有 ...

  9. 菜鸟-@responsebody 理解-用法

    @responsebody表示该方法的返回结果直接写入HTTP response body中一般在异步获取数据时使用,在使用@RequestMapping后,返回值通常解析为跳转路径,加上@respo ...

  10. java集合框架之HashSet

    参考http://how2j.cn/k/collection/collection-hashset/364.html#nowhere 元素不能重复 Set中的元素,不能重复重复判断标准是: 首先看ha ...