我找虫子的过程主要是make it repeatable,然后scope isolation(就是hufey说的利用println来二分法查范围的意思)。找到后再根据repeatable的条件添加一个新的test case。(php unitest现在用phpunit(phpunit.de那个)+Ant。)
有些时候一些bug用debugger的确快和方便,我也经常在写找bug的println时候希望能够有breakpoint来帮忙解决燃眉之急,但那时或者之后往往心里明白如果之前我能够更_自律_地把代码写得更清晰结构更好,实际上那些问题就应该能够更简单地(比如通过println)找到和解决。
所以我现在还是觉得从长远来说,还是应该尽量用unittest和不断代码重构来保持项目的健康和*强迫*自己提高个人的代码质量和开发效率。
另外说下昨天正在抓的bug:开发好了的系统从apache(dev machine)移植到lighttpd(production)后,发现GET请求的参数全部丢失。这时候根本用不了IDE,unitest也没法用,只有print_r,最后发现是不了解lighttpd的err-handler-404配置不提供query string造成的。