编译能帮我们找出表层的错误,要迅速找出隐藏的错误就必须用到调试。
1.定位错误
1.1定位至出错函数
我习惯在自己定义的每个函数开始打印[function-name]Begin,结束打印[function-name]End,打印语句默认是注释掉的,当程序运行异常时,我便去掉注释,这样便可以第一时间定位报异常的函数。当然写程序一定要考虑全面,如指针使用前一定要初始化,释放指针要置空,避免程序存在野指针。
1.2定位至出错语句
同理,将出错函数分成几块,很快就能定位到具体的出错语句。
2.打印错误
直接打印出错前的变量,直观的推测一下该变量是否会造成程序异常;抛出异常,查看程序异常的原因;如果是调用一些API函数,一般会有报错语句,如mysql_errno(MYSQL* mysql) 等。
3.逐步调试
我们的开发工具一般都会提供逐句调试的功能,逐句调试,观察程序的逻辑和变量是否正确。
4.其他
有问题,优先考虑后面更新的程序。