- 主题:各位都解决过什么诡异或者让人有成就感的难题?
厉害!
说说是咋找到的?这种不好复现的bug最难定位了
【 在 bihai (new half life) 的大作中提到: 】
: 公司有个大牛是被收购进来的,给了估计上亿,后来老哥退休了。退休时,客户找来说,有个问题,设备的CF卡某一天的重要数据读不出。后来立了项目给我做。发现,CF卡里面FAT内容被文件的内容覆盖。同事找来另一个CF卡,是他去北方客户那里现场解决问题时从设备里拿出来的。
: 看源码2个星期,因为没调试过该系统,所以先看源码。找到一个bug,该bug在SanDisk所使用的第三方(就是SanDisk买的代码)的FAT16库里面。该问题每隔一个半月左右发生一次,所以调试是很难等到这个问题的。汇报会上,客户非常满意,说这类似于大海捞针,或者在银河系里面
: 后来老哥又回来了。跟我说,这个事情可以吹一辈子牛了。所以,本人在这里吹个牛爽爽。
: ...................
--
FROM 114.250.75.116
嗯 学习了 看来主要还是要从分析日志入手 可见一些软件有个强大的日志系统和分析工具还是很有必要的
甚至对分析这种不易复现的bug 可以说是必须的吧
另外开发经验和debug经验也得非常丰富才行 我还得多学习啊。。。
【 在 bihai (new half life) 的大作中提到: 】
: 经验加上逻辑思维,加上运气吧。每天下班都在家编程序作为兴趣爱好,所以可以积累经验。尤其是多线程必须在实战中学习。
: 解决这个问题时先想到从各种多线程死锁,不可重入的函数的重入下手,结果最后啥都没发现。
: 再从共享变量入手,看看哪里用共享变量。因为想到多线程使用共享变量和可能会有问题。最终有个每毫秒更新的32位变量用来计时,在FAT16那个库里面,有个5个地方用了这个变量计算离上次操作是否间隔10秒。但是这五个比较分成两种写法: f - lastF <10, 和 f<lastF + 10。
: ...................
--
FROM 111.196.188.68
另外 你这句话:
但是这五个比较分成两种写法: f - lastF <10, 和
f<lastF + 10。想想看哪个有问题。
我没想出来 哪位大牛解释下?
【 在 bihai (new half life) 的大作中提到: 】
: 经验加上逻辑思维,加上运气吧。每天下班都在家编程序作为兴趣爱好,所以可以积累经验。尤其是多线程必须在实战中学习。
: 解决这个问题时先想到从各种多线程死锁,不可重入的函数的重入下手,结果最后啥都没发现。
: 再从共享变量入手,看看哪里用共享变量。因为想到多线程使用共享变量和可能会有问题。最终有个每毫秒更新的32位变量用来计时,在FAT16那个库里面,有个5个地方用了这个变量计算离上次操作是否间隔10秒。但是这五个比较分成两种写法: f - lastF <10, 和 f<lastF + 10。
: ...................
--
FROM 111.196.188.68
呃 明白了 多谢
【 在 fanci (大葡萄) 的大作中提到: 】
: 比如f和lastf是无符号字节
: F=250, lasts=249
--
FROM 111.196.188.68
thx
【 在 xyyyy (小隐) 的大作中提到: 】
: lastF + 10在极端情况下会溢出数据类型最大值啊
: 但是概率很小所以难debug
--
FROM 111.196.188.68