用屏蔽法找bug的总结
发布日期:2021-06-30 22:17:16 浏览次数:2 分类:技术文章

本文共 502 字,大约阅读时间需要 1 分钟。

总结

今天用屏蔽法找bug吃亏了。

bug描述:有一个上下文类,在上下文中的内容都丢在里面。本来是在找内存泄漏,没想到,当这个类不用时,去删除它,每次都崩溃。那就不能先去找内存泄漏了,先得将崩溃问题搞定。

以前,这个cm的其他版本出现过类似问题,是将此类的成员变量写冒了,覆盖了其他成员变量,导致删除时报错。 我很自然的就想用屏蔽法,从底下往上屏蔽,如果真是和上次一样,是写冒了引起的。应该很快能屏蔽出不崩溃的情况。

整了10几,20次,还是没有屏蔽出不崩溃的情况。

没折了,还是自顶向下屏蔽吧。

这下可好,除了new这个类,删这个类指针的代码,屏蔽了所有其他代码,还是报错。
再去看删除这个类用的宏,原来是delete[] p. new一个类,不是一个类数组,必须要用delete p, 而不能是delete[] p. 否则崩溃。

这bug以前修复过,不知道咋的,可能这个工程比较早,这个bug没修复,也可能同事在现场修复后,没提交到这个svn分支。

吃亏了,用了一个下午。

看来屏蔽法,还是要自顶向下。在流程分支上用2分法屏蔽,很快就能定位到问题代码块,然后再去分析调试。想当然的屏蔽,太浪费时间了。

转载地址:https://lostspeed.blog.csdn.net/article/details/79606546 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:debug : linux C, 由rename API引起的内存被吃光
下一篇:由map.insert使用不当引起的内存泄漏

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年04月17日 04时15分09秒