Open xxleyi opened 3 years ago
昨天的工作是花了大半天搞定一个 bug。
今天的工作也是花了大半天搞定一个 bug。
可谓价值千金的 bug 了。
分别是什么 bug 呢?
昨天的 bug 最诡异,可以说是我职业生涯以来最有趣的 bug 了。这个 bug 的特点是:没有运行时报错,而且是在代码未被调用的情况下就造成 bug。所有的事情都看起来没啥问题,但最终的表现却不正常。背后原因是项目的复杂性延伸到 AST 的操作上。
由于项目特殊性质,项目总体分为两部分:
因为 AST 操作这一中间层的加入,项目维护者需要考虑的事情变多了,能用的 debug 手段和信息却变少了,这要求解决棘手问题时需要了解基本的代码编译原理,考虑一些 AST 操作上的 bug 带来的离奇问题。
最终,昨天的问题便是此类问题,虽然经过层层排除定位并绕过了 bug 点,但产生 bug 的根源依然是未知。
今天的 bug 相对来说就好很多,但问题是我对微信小程序比较陌生,加上客户使用了 uniapp 这个跨端框架,以及报错信息的不友好,导致真正的问题迟迟不能被定位到。
这个时候就要不放弃,不死磕,灵活出击,轮番头脑小风暴,反复尝试,在尝试中寻找更多灵感,抓住更多信息。
最终抓到真正的问题点之后,bug 迎刃而解:客户的跨端小程序产生的组件并非原生组件,不支持 page.setState 方法。
解决方法也很简单:自定义 setState 方法。
这是两个典型的不友好 bug,突破常理,信息匮乏,背景知识不牢靠。但最终将它们解决掉还是蛮有意思的一件事。
昨天的工作是花了大半天搞定一个 bug。
今天的工作也是花了大半天搞定一个 bug。
可谓价值千金的 bug 了。
分别是什么 bug 呢?
昨天的 bug 最诡异,可以说是我职业生涯以来最有趣的 bug 了。这个 bug 的特点是:没有运行时报错,而且是在代码未被调用的情况下就造成 bug。所有的事情都看起来没啥问题,但最终的表现却不正常。背后原因是项目的复杂性延伸到 AST 的操作上。
由于项目特殊性质,项目总体分为两部分:
因为 AST 操作这一中间层的加入,项目维护者需要考虑的事情变多了,能用的 debug 手段和信息却变少了,这要求解决棘手问题时需要了解基本的代码编译原理,考虑一些 AST 操作上的 bug 带来的离奇问题。
最终,昨天的问题便是此类问题,虽然经过层层排除定位并绕过了 bug 点,但产生 bug 的根源依然是未知。
今天的 bug 相对来说就好很多,但问题是我对微信小程序比较陌生,加上客户使用了 uniapp 这个跨端框架,以及报错信息的不友好,导致真正的问题迟迟不能被定位到。
这个时候就要不放弃,不死磕,灵活出击,轮番头脑小风暴,反复尝试,在尝试中寻找更多灵感,抓住更多信息。
最终抓到真正的问题点之后,bug 迎刃而解:客户的跨端小程序产生的组件并非原生组件,不支持 page.setState 方法。
解决方法也很简单:自定义 setState 方法。
这是两个典型的不友好 bug,突破常理,信息匮乏,背景知识不牢靠。但最终将它们解决掉还是蛮有意思的一件事。