求助:为什么删除一段无用代码后编译结果不同

[复制链接]
查看11 | 回复4 | 2021-1-27 06:57:16 | 显示全部楼层 |阅读模式
我删除这样一句无用的代码:for(n=0;n -->
回复

使用道具 举报

千问 | 2021-1-27 06:57:16 | 显示全部楼层
默认不优化,即使无用的语句也编译生成对应的无用汇编指令。
我猜。
回复

使用道具 举报

千问 | 2021-1-27 06:57:16 | 显示全部楼层
我试了一下,只有加-O2才有正确的结果。关键是这段代码删了我要计算的和这无关的东西就会出错,看来只能带着-O2了。
回复

使用道具 举报

千问 | 2021-1-27 06:57:16 | 显示全部楼层
Windows:
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看CallStack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止。
Linux:
进程意外退出会在当前目录下产生‘core’文件或形如‘core.数字’的文件比如‘core.1234’
使用命令
gdb运行程序名core或core.数字
进入gdb然后使用bt命令
可以查看进程意外退出前函数调用的堆栈,内容为从上到下列出对应从里层到外层的函数调用历史。
如果进程意外退出不产生core文件,参考“ulimit-ccore文件最大块大小”命令

回复

使用道具 举报

千问 | 2021-1-27 06:57:16 | 显示全部楼层
感觉多半是多线程的影响,最好能找到问题原因,不然以后出莫名其妙的问题都没办法查
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行