Heim >Backend-Entwicklung >PHP-Tutorial >javascript - 说说你遇到的bug

javascript - 说说你遇到的bug

WBOY
WBOYOriginal
2016-06-06 20:28:551298Durchsuche

在知乎上看到你碰到过的最难调的 Bug 是什么样的
大家说说自己开发中遇到的一些诡异的bug,然后怎么解决的?直接上代码比较明了
说一个我最近遇到的:
用的一个第三方库用intval转换字符串

<code class="php">    const IOS_MIN_ID = 2200000000;
    $id = '2200087853';
    if(intval($id) >= IOS_MIN_ID)
            return true;//判断始终失败</code>

echo intval('2200087853');// 2147483647//应该返回数字2200087853的
本地系统是64位的,但php是32位的,服务器上却没问题,于是bug了

回复内容:

在知乎上看到你碰到过的最难调的 Bug 是什么样的
大家说说自己开发中遇到的一些诡异的bug,然后怎么解决的?直接上代码比较明了
说一个我最近遇到的:
用的一个第三方库用intval转换字符串

<code class="php">    const IOS_MIN_ID = 2200000000;
    $id = '2200087853';
    if(intval($id) >= IOS_MIN_ID)
            return true;//判断始终失败</code>

echo intval('2200087853');// 2147483647//应该返回数字2200087853的
本地系统是64位的,但php是32位的,服务器上却没问题,于是bug了

这个 bug。意识到它的存在之后我调试过好几次,历时数月,依然不得其解,甚至打算等有空了编译调试版本的 libnotify。后来经朋友协助,研究 StackOverflow 上的回答,加粗文字反汇编查看,才终于明白原来它自从我从32位系统迁移到64位就一直存在了。

PS: 最近在 GtiHub 上很火的:danluu/debugging-stories

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn