记一次有趣的debug,VS编译器上Debug和Realease的差异

article/2025/9/24 21:59:44

        之前自己写过一个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,最终导致程序跳出,并返回错误信息,读图失败。

  

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


http://chatgpt.dhexx.cn/article/hAmSQ5KM.shtml

相关文章

C++语言基础篇

✅作者简介:CSDN内容合伙人,全栈领域新星创作者,阿里云专家博主,华为云云享专家博主,掘金后端评审团成员 💕前言: 学长出的这一系列专栏适合有⼀点 C 基础&#xff0c…

PCL12.1 Realease 附加依赖项

PCL12.1 Realease 附加依赖项 libboost_atomic-vc142-mt-g-x64-1_78.lib libboost_bzip2-vc142-mt-g-x64-1_78.lib libboost_chrono-vc142-mt-g-x64-1_78.lib libboost_container-vc142-mt-g-x64-1_78.lib libboost_context-vc142-mt-g-x64-1_78.lib libboost_contract-vc142-…

Vue强制刷新页面重新加载数据方法

业务场景 在管理后台执行完增删改查的操作之后,需要重新加载页面刷新数据以便页面数据的更新 实现原理 就是通过控制router-view 的显示与隐藏,来重渲染路由区域,重而达到页面刷新的效果,show -> flase -> show 具体代码…

Linux 重新加载 nginx 配置命令

1. 查找 nginx 位置 whereis nginx2. 进入 nginx 目录 cd /usr/local/nginx/sbin3. 检查 nginx 配置文件是否正确 ./nginx -t 4. 重新加载配置文件 ./nginx -s reload

IDEA 无法重新加载Maven项目

IDEA 无法重新加载Maven项目 如图: 真头疼,搞了半小时才搞明白,我的Maven版本是3.8.6,而idea版本是2020,用不了这么新版的maven。 解决方案 maven版本高于idea版本,去查找低于idea版本日期的maven或者直…

Unity架构之详解域重新加载和场景重新加载

一、unity进入运行模式包括以下主要阶段 备份当前场景:这仅在场景被修改后发生。这样当退出运行模式时,Unity 将场景恢复为运行模式开始前的状态。Domain Reload:通过重新加载脚本域来重置脚本状态。Scene Reload:通过重新加载场…

Pycharm如何重新加载

在日常工作中,我们可能会经常遇到一种情况,那就是当我们程序执行结束后,相应的项目文件并没有自动显现出来,这时为避免我们关闭Pycharm再重新打开的麻烦,我们可以使用Pycharm中的同步或者快捷键进行重新加载。 1.同步 …

Box2d源码学习十一GJK之距离的实现

本系列博客是由扭曲45原创,欢迎转载,转载时注明出处,http://blog.csdn.net/cg0206/article/details/8352227 Box2d中距离是指两个形状最近点之间的距离,主要用于形状的碰撞检测,通过GJK算法实现,在GJK中又使…

GJK算法求凸多边形之间的距离

GJK算法最初用来求三维空间中凸多面体的距离(即最近距离),也因此经常用来做碰撞检测(距离是否为0)。后被推广到n维空间中求凸包之间的距离,此处用来求二维平面上2个凸多边形的距离。 GJK算法首先要解决…

GJK算法,碰撞检测(自学笔记,侵权删)

学哔哩哔哩《看似简单的复杂问题,奇怪而优雅的解决方式(GJK算法) | Reducible》——来自博主“我最会爬惹”笔记 一、凸形和凹形的基础概念 所有图形可以分成两种:凸形和凹形,如图1.1所示。 图1.1 凸形和凹形 凸形的性…

判断两个形状是否相交(二)-GJK

判断两个形状是否相交二-GJK 原文地址一 介绍二凸多边形性质三Minkowski和四单纯形五支持函数六创建单纯形七相交检测八迭代 然后我们开始循环迭代第二次迭代第三次迭代 九检测单纯形结束语 判断两个形状是否相交(二)-GJK 原文地址 一、 介绍: GJK和SAT一样&am…

碰撞检测GJK算法论文解析一

碰撞检测GJK算法论文解析一 碰撞检测Objcet Representation And Distance1.涉及的概念2.内容详解 Preliminaries1.涉及的概念2.内容详解 碰撞检测 碰撞检测是3维游戏内必不可少的一个功能,有了碰撞检测,游戏才能显得更加真实。之前查找碰撞检测的资料&a…

GJK之判断是否相交

由于排版问题,新文章已经更新到 本文新地址 原文地址: http://www.codezealot.org/archives/88 一、 介绍: GJK和SAT一样,只适用于凸多边形。GJK更为强大的地方在于,它可以通过“支持函数”(稍后讨论)支持所有的形状。因此,和SA…

引擎开发_ 碰撞检测_GJK 算法详细介绍

概述 和SAT(分离轴定理)算法一样,GJK算法也只对凸体有效。 GJK算法的优势是:通过support函数(后面会详细讲述),从而支持任何凸体形状之间的碰撞检测;相比SAT算法,你不需要一些额外的操作&#x…

Planning-碰撞检测之GJK

原文:dyn4j:GJK (Gilbert–Johnson–Keerthi) 目录 1. Minkowski Sum(明可夫斯基和)2. Simplex3. support函数4. 构建Simplex G J K GJK GJK和 S A T SAT SAT一样用于检测凸多边形,和 S A T SAT SAT不同, G J K GJK GJK可以处理任意形状的凸多边形&#…

GJK算法

转自:http://blog.sina.com.cn/s/blog_833d50630100xw1r.html GJK算法最初用来求三维空间中凸多面体的距离(即最近距离),也因此经常用来做碰撞检测(距离是否为0)。后被推广到n维空间中求凸包之间的距离&…

碰撞检测GJK算法论文解析二

碰撞检测GJK算法论文解析二 The Theoretical Algorithm内容详解 初探The Distance Subalgorithm内容详解 Appendix Ⅱ涉及的概念内容详解 接上文,本篇文章讲解GJK算法论文的第四、第五部分前半部分,这是整个算法最为核心的部分。第四部分阐述了算法的核心…

碰撞检测GJK算法论文解析三

碰撞检测GJK算法论文解析三 再探Appendix Ⅱ内容详解 再探The Distance Subalgorithm内容详解过程1过程2过程3 这里要先纠正上篇文章的一些错误,就是上篇文章的最后其实并没有证明定理3,而只是给出了仿射集系数向量 λ \lambda λ的解的形式,…

GJK碰撞检测(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

物理引擎学习04-GJK计算多边形之间的最近距离

计算多边形之间的最近距离,才是GJK算法原本的目的。只有两个多边形不相交,计算最近距离才有效。如果相交,则最近距离无效,但是可以使用EPA算法要计算碰撞深度。本文的写作目的,主要是对GJK算法的理解和应用。对算法本身…