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

 

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》书中降到的断言的使用,用于在实践中体会到了及早判断的重要性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值