coredump之百米之内必有解药

这两天给PHP的C扩展加了一点功能,自我感觉良好。

但是呢,运行一阵就是会偶然出core,于是自我怀疑

其实回滚代码后压测也会core,说明不一定是我引入的,当然我也没排除自己的嫌疑。

core文件的stack很稳定,但是稍微调整代码,stack又会变成另外一副样子,但无论如何core没有给我什么有用的信息,甚至都不是core在我的代码路径中,没有任何帮助

这种局面用valgrind等手段也是无法排查出问题的,因为core具有随机偶然性,特定情况触发。

于是,我依据多年经验,明智的选择耐心等待,于是终于出现了2个core文件,stack完全一致,但是这次代码停留在了我的代码路径上

这个机会很重要,正是我梦寐以求的。

因为根据我多年经验归纳,只要core在有效的代码路径上,我就可以gdb观察各种细节变量值

当然,上述价值不是最重要的。

本质在于,一般造成core的罪魁祸首都在百步之内,只要仔细分析代码前前后后,就有非常非常大的可能找到原因,这是上天给你的安排,给你一次完美的coredump,帮助你解开谜团。

其实这就是历史悠久的一段代码,一个越界写入操作。

无非因为我增加了一些代码,恰好调用到了这个函数,然后导致coredump被暴露了出来。

红色字体,是我希望分享给大家的一些思想,可以帮助大家更精确的定位问题,这就叫方法论。

发表评论

电子邮件地址不会被公开。