V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
oska874
V2EX  ›  程序员

你遇到过的最难调的 bug 是什么?

  •  
  •   oska874 · 2015-08-22 19:41:19 +08:00 · 5275 次点击
    这是一个创建于 3169 天前的主题,其中的信息可能已经有所发展或是发生改变。

    看到一个段子:

    然后就想到了一个自己遇到的最难调的 bug 是这样的:给一个刚生产出来的 arm 开发板写 bootloader ,然后每次都是刚跑一下就挂了,然后各种修改代码、仿真器监控,都解决不了,然后怀疑自己、怀疑人生、怀疑硬件,就去问了一下做板子的哥们,一句话把我喷死了: fpga 的看门狗复位了 cpu 。 大哥你手也太快了,刚生产出来的板子你就刷 fpga 了。

    说说你们难调的 bug 吧。

    46 条回复    2015-08-24 14:17:19 +08:00
    Strikeactor
        1
    Strikeactor  
       2015-08-22 19:51:36 +08:00
    调用一个网站的 API 一直是错误结果,明明照着文档来的,怎么改都没用
    后来发现是用的梯子服务把第一次的请求结果缓存了
    vitovan
        2
    vitovan  
       2015-08-22 19:52:24 +08:00 via Android   ❤️ 3
    说个看来的,忘记出处了:

    从前有个系统管理员,平时去机房登录服务器时都是站着操作。

    有一次腰疼,搬了个凳子坐在了机器前面,完蛋,死活登录不进去,提示密码错误。

    于是他站了起来,重新输入了一次密码,进去了。

    后来他觉得奇怪,于是抽时间做了测试,发现:只要一坐下,就密码错误,站起来就好了。

    这个 Bug 在他的职业生涯中持续了好几年。

    直到有一天公司升级设备给他换了个键盘。

    原来是老键盘上有两个键装反了,站着打字是看着键盘,坐着盲打就错了。
    ybh37
        3
    ybh37  
       2015-08-22 20:15:32 +08:00
    有很多,都忘了
    现在遇到一个,调试了一天也没结果
    iOS 空载音频 raw data 经过 FFT 变换后的值随着时间的延长逐渐变大……
    没找到办法呢
    rrfeng
        4
    rrfeng  
       2015-08-22 20:21:45 +08:00   ❤️ 1
    昨天我司一群人在调试 nodejs
    用 PM2 启动的程序总是在 web 上一点就挂, node 直接运行的就没问题……

    研究半天无果,我去看了一眼,原来 PM2 开启了 watch ,然而程序会在当前目录写一个临时文件。于是就呵呵哒了!
    lianyue
        5
    lianyue  
       2015-08-22 20:41:37 +08:00   ❤️ 1
    foreach ($array as $key => &$value ) {
    xxxxxx..........
    }



    ..............

    $value = xxxxxx; or foreach ($array2 as $key => $value )
    xxxxxxxxxxx
    xxxxxxxxx........... 坑了我半天
    knightdf
        6
    knightdf  
       2015-08-22 20:47:49 +08:00
    写错单词的时候
    zhengnanlee
        7
    zhengnanlee  
       2015-08-22 20:49:51 +08:00
    Dongdong36
        8
    Dongdong36  
       2015-08-22 21:08:51 +08:00
    mongoose...

    第一次,取不到数据,因为集合名称没变复数

    第二次,取不到数据,因为一个单词的复数写错了...

    调试好久...
    Strikeactor
        9
    Strikeactor  
       2015-08-22 21:40:54 +08:00
    又想起一个
    在 Openshift 改 PHP 代码,结果总是不变
    后来气得把所有代码全删了,发现竟然还是能跑
    查了才知道这坑货默认把 APC 打开了。。

    缓存问题真的是神坑
    tb4649120073rs
        10
    tb4649120073rs  
       2015-08-22 22:52:09 +08:00
    @lianyue 这个会有什么问题?
    xcv58
        11
    xcv58  
       2015-08-22 22:55:21 +08:00 via iPhone
    自己实现虚拟内存,多核多进程运行时偶尔出错。
    undeflife
        12
    undeflife  
       2015-08-22 23:15:40 +08:00
    以前看到一个 每天 5 点以后网站就无法访问,百思不得其解,决定现场蹲守,一整天一切正常,直到下班,前台 MM 说 我下班先回去了,小 X 你走的时候记得把那个服务器给关了.
    gamexg
        13
    gamexg  
       2015-08-22 23:37:17 +08:00
    一个坑。

    ```
    >>> l = (a for a in range (3 ))
    >>> for i in l:
    print i


    0
    1
    2
    >>> for i in l:
    print i


    >>> (a for a in range (3 ))
    <generator object <genexpr> at 0x023F7698>

    ```

    有一次看到别人代码里面用(a for a in range (3 )),以为生成的是 tuple 提高性能。后来就用了一次,结果发现是 generator ,只能用一次 ...
    jarlyyn
        14
    jarlyyn  
       2015-08-22 23:42:55 +08:00
    <script type="text/javascrept">
    xxxx
    </script>
    aheadlead
        15
    aheadlead  
       2015-08-23 00:04:47 +08:00 via iPhone
    大致是这样 opengl in C

    int a[3];
    a[0] = xxx;
    a[1] = xxx;
    a[3] = xxx;

    结果导致大概那一个绘图算法,十次里面有九次是正常的,怎么查 tmd 也查不出。

    后来多亏了 valgrind 发现了。

    最后是终端配色的锅,数字和背景色有点像…写代码的时候手滑,按错了,嗯,应该是这样
    garfieldWu
        16
    garfieldWu  
       2015-08-23 00:20:18 +08:00
    我觉得微信的授权接口算是比较难调试的了,参数顺序都会导致授权失败。
    没有文档,没有错误信息,最后 google 了好久才偶然找到原因
    Smilecc
        17
    Smilecc  
       2015-08-23 00:27:41 +08:00
    主站是 MediaWiki ,我写的登录接口,在线上跑了三个月没问题,突然有一天跪了,主站程序也没升级,我至今也不知道问题所在。
    iyaozhen
        18
    iyaozhen  
       2015-08-23 00:31:54 +08:00
    看来缓存的锅挺多的。

    @garfieldWu 微信的接口本来就是这样的呀,认证的时候需要按照 ascii 排序,更坑的是基础的那个开发者模式认证是要按 value 的 ascii 排序, weixin js sdk 里面的有个认证是按照 key 的 ascii 排序,当时极度的怀疑自己的人生了。
    jianleer
        19
    jianleer  
       2015-08-23 00:53:40 +08:00   ❤️ 1
    估计程序员最难测的 bug 是找不到女朋友吧
    nooper
        20
    nooper  
       2015-08-23 00:54:03 +08:00 via iPad
    我会列出禁止用户注册名称,一系列。
    suifeng
        21
    suifeng  
       2015-08-23 01:01:22 +08:00
    我有一次因 api 缓存调试了 1 天,第二天才想到是缓存。。。
    ljbha007
        22
    ljbha007  
       2015-08-23 01:22:02 +08:00
    把学校上外网的电信拨号器 netkeeper 移植到路由器上的时候 需要通过 802.1x 协议接入学校内网
    调了一个月 始终不通
    最后发现是 BCM63XX 系列 SoC 芯片自带硬件解析 802.1x 协议的功能
    但是这个功能在有线网的状态下有 BUG 导致有线网状态下 802.1x 协议提前中断
    调了一个月最后追踪到 BUG 的位置 然后写给驱动作者 最后作者打了个 patch 终于给解决了
    aheadlead
        23
    aheadlead  
       2015-08-23 06:58:03 +08:00 via iPad
    @jianleer 我觉得这个比较有道理
    lianyue
        24
    lianyue  
       2015-08-23 08:29:43 +08:00 via iPhone
    @tb4649120073rs $array 最后一个值 会被后面的 替换 因为引用
    leemail
        25
    leemail  
       2015-08-23 09:36:42 +08:00 via iPad   ❤️ 1
    TheCure
        26
    TheCure  
       2015-08-23 09:40:48 +08:00
    @ljbha007 hello 重邮的?
    netkeeper 看来很多人都搞过
    ljbha007
        27
    ljbha007  
       2015-08-23 09:49:21 +08:00
    @callofmx 是啊 我后来搞通了 用路由器拨号
    TheCure
        28
    TheCure  
       2015-08-23 09:52:12 +08:00
    @ljbha007 现在已经变成普通的 DHCP 了
    您是哪届的?
    Actrace
        29
    Actrace  
       2015-08-23 09:59:40 +08:00
    我遇到的最难调的 Bug 就是产品经理的脑子抽了.
    ljbha007
        30
    ljbha007  
       2015-08-23 10:01:53 +08:00
    @callofmx 2012
    617019296
        31
    617019296  
       2015-08-23 10:55:59 +08:00 via Android
    实习小生一枚,,表示前人写的混乱代码改 bug 很麻烦。各种类调用,,找代码都累死!!
    loading
        32
    loading  
       2015-08-23 11:04:32 +08:00 via Android
    以前不知道浏览器缓存,自己点 shift 刷新, css 调试好后打电话去说整好了,然后对方电脑点刷新样子就是不变~

    最后才知道要 xx.css?_t=233
    loading
        33
    loading  
       2015-08-23 11:09:45 +08:00 via Android
    当时是 .asp 我用了 index2.asp 和 style2.css 进行暴力在线调试~

    好了后,改名~
    fxxkgw
        34
    fxxkgw  
       2015-08-23 11:36:02 +08:00
    哥们你是做交换机的吧。。。
    cyr1l
        35
    cyr1l  
       2015-08-23 11:42:54 +08:00
    找不到对象
    oska874
        36
    oska874  
    OP
       2015-08-23 12:24:11 +08:00
    @fxxkgw 无关。嵌入式的。
    @cyr1l 这个估计得重构才能解决:)
    @aheadlead 这个弄完估计死的心都有了。
    @vitovan 这哥们~~~平时打字难道就不出现问题?果然站着写代码效率高
    loryyang
        37
    loryyang  
       2015-08-23 13:18:18 +08:00
    大小写拼错,然后 vim 关闭了 case sensitive ,一个巨长的函数名,半天没查出来
    Arrowing
        38
    Arrowing  
       2015-08-23 13:54:03 +08:00
    @vitovan 感觉装反了,会发现的吧,站着打的时候,难道一点感觉都没吗?
    popu111
        39
    popu111  
       2015-08-23 14:08:02 +08:00
    众(重)口难调
    isunmoon
        40
    isunmoon  
       2015-08-23 14:08:08 +08:00
    这说的就是我,,,我是他旁边的 java ,只不过当时我的昵称是 undefined ,,,我不是老张,是老王。。。
    danny200309
        41
    danny200309  
       2015-08-23 14:15:52 +08:00
    always new objects, but never found "sweetheart"!
    lilydjwg
        42
    lilydjwg  
       2015-08-23 14:44:04 +08:00
    @gamexg 除了 () 之外,没逗号怎么会有 tuple 。那个括号完全是给词分组用的。我一般是 tuple (xxx )。
    vitovan
        43
    vitovan  
       2015-08-23 14:45:34 +08:00
    @Arrowing 记错了,应该是坐着输入正确,站着错吧,好像是键帽装反了。
    Reficul
        44
    Reficul  
       2015-08-23 20:34:31 +08:00
    前段时间,学着写操作系统,然后 GDT 设置完 JMP 一直保护重启。 GDB 调试, qemu 查看寄存器各种都表示 eip 飞到了不知道哪去。三天后我把前面一行 sprintf 注释掉之后世界清静。用的 C 库里面因为 uchar 和 char 转换的关系,中间不知道咋内存泄漏了。

    现在调试多进程那里,因为各种跳来跳去,进程的链表还不知道为啥老是被破坏掉。。。。纠结了两天了。

    我是菜比啊 (°ཀ°)
    Zkiller
        45
    Zkiller  
       2015-08-24 11:04:43 +08:00
    @undeflife 哈哈,笑死我了。。。
    xpol
        46
    xpol  
       2015-08-24 14:17:19 +08:00
    c 语言,行注释末位多了一个 \
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3968 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 05:14 · PVG 13:14 · LAX 22:14 · JFK 01:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.