举个例子,我写了一个一万行的函数然后崩溃了,而且由于某些神奇的原因VC++就是不告诉我崩在了哪里,那怎么办呢?
我先注释掉后面一半的代码,然后崩溃了,就证明蹦在这里了,如果没崩溃,就证明崩在了后面。于是你立刻就把范围缩小了一半。剩下如法炮制,直到定位到一行为止。
==========================================================
我还有一次,是跟一个人合作。对方一直在改,我一个feature写得比较久,当人家checkin了几十次之后,我merge下来,跑了一次test,居然崩溃了。我在指责了那个人每次checkin前都不跑test之后,我就开始了二分调试法:
首先我知道,version 100是好的,version200 是不好的,所以我就把version150弄下来跑一下,发现没崩溃,就把version 175弄下来跑一下,发现崩溃了,就把version 163弄下来跑一下,发现崩溃了……如法炮制,最后定位到了一个version,然后把diff贴在email里面,发邮件再谴责一次,勒令对方修改……当然那个diff为什么会造成问题我没看,我还得继续做下一个feature……