if else 两个语句为什么同时执行了

A-Point 2017-09-07 03:12:23
我的程序里有一个if判断,在dubug下运行正确,可在release下if else里的语句都执行了。下图方框里的语句。

...全文
3397 22 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_16538323 2019-06-28
  • 打赏
  • 举报
回复
那是因为你在服务器上部署的文件,和你idea工程上的文件,行号不匹配造成的。
A-Point 2017-09-12
  • 打赏
  • 举报
回复
谢谢各位大神,问题解决了,是第一个执行语句出现异常了
赵4老师 2017-09-11
  • 打赏
  • 举报
回复
计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构…… 对学习编程者的忠告: 多用小脑和手,少用大脑、眼睛和嘴,会更快地学会编程! 眼过千遍不如手过一遍! 书看千行不如手敲一行! 手敲千行不如单步一行! 单步源代码千行不如单步Debug版对应汇编一行! 单步Debug版对应汇编千行不如单步Release版对应汇编一行! 不会单步Release版对应汇编?在你想单步Release版C/C++代码片断的前面临时加一句DebugBreak();重建所有,然后在IDE中运行。(一般人我不告诉他!
A-Point 2017-09-11
  • 打赏
  • 举报
回复
引用 18 楼 shihengzhen101 的回复:
[quote=引用 楼主 Point_To_Point 的回复:] 我的程序里有一个if判断,在dubug下运行正确,可在release下if else里的语句都执行了。下图方框里的语句。
这种情况在函数执行一次的时候是不可能的,你可以打印log来标记执行流程,不要在release条件下调试,那样和代码对不上 如果函数被调用多次,倒是两个分支都有可能执行[/quote] 嗯,正在看boost的日志功能怎么用
AlbertS 2017-09-11
  • 打赏
  • 举报
回复
引用 楼主 Point_To_Point 的回复:
我的程序里有一个if判断,在dubug下运行正确,可在release下if else里的语句都执行了。下图方框里的语句。
这种情况在函数执行一次的时候是不可能的,你可以打印log来标记执行流程,不要在release条件下调试,那样和代码对不上 如果函数被调用多次,倒是两个分支都有可能执行
jena_wy 2017-09-11
  • 打赏
  • 举报
回复
只能进入一个分支。
angel6709 2017-09-11
  • 打赏
  • 举报
回复
没有那种可能性,只是你的ddb过时了而已,解决办法,重新编译。
自信男孩 2017-09-11
  • 打赏
  • 举报
回复
引用 9 楼 Point_To_Point 的回复:
[quote=引用 1 楼 cfjtaishan 的回复:] 建议在if和else里分别加一句调试打印,看看是不是两条打印都输出
设置输出 也没用,两个括号都进去了,但输出只输出了一个条件的内容,另一个条件进去了,但是没有输出,跳过输出语句了。。。 因为条件里涉及数据库操作,现在定位是数据库连接出现问题,不知道为什么debug下运行正常,release下就出现问题,ado连接不上数据库[/quote] 如果没有将另外的打印打出来,说明只进入了一个分支。
A-Point 2017-09-10
  • 打赏
  • 举报
回复
引用 2 楼 cfjtaishan 的回复:
理论上不会同时执行,也可以再加一句调试打印,就是把flags[0]输出出来,看看是多少?
打印出来flags[0]确实是1
A-Point 2017-09-10
  • 打赏
  • 举报
回复
引用 7 楼 zhao4zhong1 的回复:
重建所有 。
reduild了,也没用
A-Point 2017-09-10
  • 打赏
  • 举报
回复
引用 1 楼 cfjtaishan 的回复:
建议在if和else里分别加一句调试打印,看看是不是两条打印都输出
设置输出 也没用,两个括号都进去了,但输出只输出了一个条件的内容,另一个条件进去了,但是没有输出,跳过输出语句了。。。 因为条件里涉及数据库操作,现在定位是数据库连接出现问题,不知道为什么debug下运行正常,release下就出现问题,ado连接不上数据库
A-Point 2017-09-10
  • 打赏
  • 举报
回复
引用 10 楼 Point_To_Point 的回复:
[quote=引用 7 楼 zhao4zhong1 的回复:] 重建所有 。
reduild了,也没用[/quote] 都rebuild了
A-Point 2017-09-10
  • 打赏
  • 举报
回复
引用 3 楼 sdghchj 的回复:
你怎么知道都执行了? release模式本就不是用来调试的,因为有很多优化,有些代码行都被优化掉了,也没有调试信息,你在release下看到的逐行运行本就是不准确的。
是的,release下确实是这样,不是用来调试的,程序在release下运行跳来跳去,代码被优化了
ck2333 2017-09-10
  • 打赏
  • 举报
回复
正常情况下是不会出现这样的情况的,除非你的编译器出问题了。
wh_ 2017-09-08
  • 打赏
  • 举报
回复
可以告诉你的是,这绝对不可能
赵4老师 2017-09-07
  • 打赏
  • 举报
回复
重建所有 。
幻夢之葉 2017-09-07
  • 打赏
  • 举报
回复
release版本进行调试模式,运行的显示代码的位置经常是错误的,所以这个做不了准!
www_adintr_com 2017-09-07
  • 打赏
  • 举报
回复
release 下调试指示的位置那些是不准确的
kuangbao9 2017-09-07
  • 打赏
  • 举报
回复
这不可能吧?我倒觉得是这个地方它跑了两次甚至更多次,只是你没察觉到。。。
sdghchj 2017-09-07
  • 打赏
  • 举报
回复
你怎么知道都执行了? release模式本就不是用来调试的,因为有很多优化,有些代码行都被优化掉了,也没有调试信息,你在release下看到的逐行运行本就是不准确的。
加载更多回复(2)

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧