8.8.1 程序调试的常见方案:单步调试、裸机LED调试、打印信息、log文件
(1)利用调试器进行单步调试(譬如IDE中,Jlink)适用于新手,最大的好处就是直观,能够帮助找到问题。缺点是限制性大、速度慢。
(2)裸机使用LED、蜂鸣器等硬件调试,适合单片机裸机程序;
(3)printf函数打印调试,比较常用,作为程序员必须学会打印调试。好处是具有普遍性,几乎在所有的情况下都能用。
(4)log文件(日志文件)是系统运行过程中在特定的时候打印一些调试信息,日志文件记录下来这些调试信息以后以供后续查找追查问题。适合于系统级或者大型程序的调试。
8.8.2 打印信息不能太多也不能太少
(1)调试信息太少不够信息找到问题所在。
(2)调试信息太多会有大量的无用的信息淹没有用的信息,导致有用信息无法看见,等于没有。
8.8.3 调试(DEBUG)版本和发行(RELEASE)版本的区别
(1)DEBUG版本就是包含了调试信息输出的版本,在程序测试过程中会发布debug版本,这种版本的程序运行时会打印出来调试信息/log文件,这些信息可以辅助测试人员判断程序的问题所在。DEBUG版本的坏处是输出调试信息占用了系统资源,拖慢了系统运行速度。因此DEBUG版本的性能低于RELEASE版本。
(2)RELEASE版本就是最终的发布版本,相较于DEBUG版本的功能代码是一样的,但是去掉了所有的调试信息。适合最终测试通过要发布的程序,因为去掉了调试信息所以程序的运行效率要更高。
(3)DEBUG和RELEASE版本其实是一套源代码。源代码中是有很多的打印调试信息的语句的,如何来控制生成DEBUG和RELEASE版本?靠条件编译,靠一个宏。
8.8.4 debug宏的实现原理
(1)DEBUG宏大概的原理是: