第三十四章 辞职前(第 3/4 页)
result = getitemfrom(packagenameitems, itemname)//1
//do sth
....
return result
}
}
从那里分析,在//1处,本应该是从已经解包过的packagenameitems中,取它的第n项;但这里误传入了解包前的packagenameitems。
似乎输入文本可能会发生几种情况,当然多数情况不需要进一步处理,直接用外部那个变量就行,此时两个变量内容一致,不会触发bug;但少数情况下,外部那个变量需要进一步处理,这才能提取到正确的内容。
这种情况下,两个变量内容不同,误用了前一个变量就读不到正确数据了。
这是个极为隐蔽的逻辑错误。
其实和变量作用域相关的故障都很隐蔽。
李明拿着整个调用链的详细记录,也是看了好几遍才发觉这两个变量的名字似乎有些意思,这才沿着这条线追查下去……
总之,意外的输出信息弄得他们一脸懵逼,因为这时候根本就不应该有这种信息,也幸好检查条件设的比较窄,只有正常返回可通过,其他一概抛异常崩掉——于是这个异常就被叶新晨的debug工具抓到,自动记录了调用栈信息。
所以说为什么之前钱志海等几人会惊讶,因为这个功能给他们抓到了一个bug。
还好这是个极为简单的bug,只需把最后那次访问时,首字符小写的变量名改成大写,故障就不再复发。
其实就这么简单个首字符大小写搞错、误访问了外部变量的bug,羽然科技公司在黑土平台上的悬赏单也是挂了有两三年了,前前后后换了很多人经手,但就是没人能抓到它。
最终,这个简单又奇葩的bug竟然被叶子大神的一个功能给抓住了。
-->>(第 3/4 页)(本章未完,请点击下一页继续阅读)