调试在线升级,发现调试代码的重要性

 

bug3:
版本回退无法完成。版本更新正常。
现象:
cgi.bin(P) <-->ssi2.bin (S)  成功
cgi.bin(S) <-->ssi2.bin (P)  成功
ssi2.bin从flash2中交换到了sf中,
这时
cgi.bin(P) <-->ssi2.bin (S) 失败
这里很重要的一个细节是cgi.bin文件比ssi2.bin小。很像当ssi2.bin从pf中搬移到sf中时损坏了。所以当再次从sf中搬移ssi2.bin到pf中时失败。

找到原因了:
RamSwap中PF2SF函数的参数地址传入错误。这个bug之所以找了这么长是时间主要是还是因为在调试期间应该多加入调试些调试信息,如果我能在搬移完后再次检验文件的检验crc,早就能发现搬移后的文件是错误的了。在以后的写代码过程中,要不断的检验正确性,如果觉得发布版中没有必要这么浪费时间检验,可以用宏控制去掉检验,但是在开发阶段检验代码越多越能尽早的发现bug。 

调试代码量最好大于发布代码量,这样才能最大限度的借助计算机的能力来调试代码,如果只会用低效的人工排错,那么还用计算机干什么。

突然想起来《why program fail》书中降到的断言的使用,用于在实践中体会到了及早判断的重要性。

你可能感兴趣的:(调试在线升级,发现调试代码的重要性)