C语言问题定位总结
二分搜索法
git bisect 命令,可以定位问题引入的第一个commit,如下图:
用法举例:
1、下载模拟代码:
$ git clone git@github.com:bradleyboy/bisectercise.git
$ cd bisectercise
2、浏览器打开网页,网页上是一个计数器,有两个按钮。点击+号按钮,可以看到计数器没有递增,反而递减,这说明代码有问题。(实际生产中,它可以使我们的编译的二进制包,观察二进制包是否由bug):
$ open index.html
3、检查代码提交历史
$ git log --pretty=oneline
4、使用git bisect start启动查错
$ git bisect start [终点] [起点]
5、起点是第一次提交4d83cf(当然,如果我们已知某个commit之前没有出错,那么这个commit id就作为我们的起点),终点是最近一次的HEAD
$ git bisect start HEAD 4d83cf
6、执行上述命令后,会切换到中间的commit,如果index.html正常,则标记为:
git bisect good
如果不正常,则标记为:
git bisect bad
7、不断重复这个过程,最终会定位到第一次出问题的commit,再进行问题定位:
b47892 is the first bad commit
8、定位完成后,使用如下命令回到当前commit,进行问题修复:
git bisect reset