工作中debug时,经常需要快速缩小问题的规模,或者定位问题开始出现的点。此时使用二分的思想,快速定位到这个点,通过分析临界点前后的程序行为,定位bug原因。这些二分的工作可以交由工具完成,网上搜了下没找到现有的合适的工具,遂自己写了个能用的。
适用问题类型
- 首先你需要能抽象出一个导致问题错误的影响因素,比如:文件的大小,节点的位置,参数的值,并能映射到整数空间,这样才方便二分。这个“整数”后续通过环境变量控制。
- 这个因素对问题影响要是“稳定”的,比如某个处理字符串的函数在字符串大小超过一定值的时候,就会一直出错,而小于这个临界值的时候函数就能正常工作。这样才能通过二分找到这个临界值。
- 能将程序的结果抽象到True Or False
使用方法
使用参考ReadMe
TODO
- git 自动找regression
- 多线程二分加速
- 图上二分