记一次有趣的debug

记一次有趣的debug,难道是VS编译器上Debug和Realease有差异吗?

        之前自己写过一个imageread的函数,用了好久一直没问题。最近两天,同事让我realease一个项目给他,其中就包含了我自己写的imageread函数。

        我的函数就长这样,不包含公司的code,不算泄密哈。

        在realse之前,我在debug模式下测试的半天,没问题。然后,就是接下来的。。。不断报错,提示“Image read fail!”。

        然后我就觉得莫名其妙,debug模式和realease模式的所有配置都一样,命令行也一样,反正就是各种配置都一样,为啥debug能跑通,realease模式就是中途跳出?


        话说,昨天搞这个bug的时候,搞了半天也搞不好。然后,又快下班了,就把我领导叫来了,让他帮忙看看。

        先是他在座位上听了我描述的现象觉得,可能是内存的问题,有可能哪里没有初始化,或者是哪个地方的内存没有释放,等等。然后,我觉得不应该,他就从座位上起来,到我位置上帮我debug,老将出马。。。不出三分钟,搞定!

        原来是我的这个bool型的imageread函数,在其中的某一个分支没有给返回值,结果这次跑的时候正好就走的这个分支。

        我这个函数之前的逻辑是:如果运行到函数内部的某处,读图出现问题就马上return false,并打印错误信息。如果是读图成功的话,就不考虑返回值了,忘记return true了。

        在那个分支加上return true的返回值后,realease模式就正常了,得到了和debug模式相同的结果。(不再出现“Image read fail!”了) 

        后来,听我领导说,可能是因为你这个地方没写返回值,然后程序运行到这里以后就会返回一个系统默认值。可能这个默认值,在debug模式下是true,这样也正好符合逻辑,程序正常进行。而在release模式下,这个默认值为false,也就是说,图像明明读成功了却返回了false,最终导致程序跳出,并返回错误信息,读图失败。


  (全文完)

作者 --- 松下J27

  

  (配图与本文无关) 

版权声明:文中的部分图片,文字或者其他素材,可能来自很多不同的网站和说明,在此没法一一列出,如有侵权,请告知,立即删除。欢迎大家转载,但是,如果有人引用或者COPY我的文章,必须在你的文章中注明你所使用的图片或者文字来自于我的文章,否则,侵权必究。 ----松下J27 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

松下J27

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值