如何防止因编译器开启优化,而导致程序执行错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何防止因编译器开启优化,而导致程序执行错误相关的知识,希望对你有一定的参考价值。
参考技术A 我的经验是:未优化的c程序可正常运行,优化后不能运行,那一定是我的程序有问题。我还没经历过不是我程序的情况。发现这种不易发现的问题,需要看汇编码。
避免的方法,我的经验:写c程序,尽量规矩;似是而非的概念,一定要搞清楚,别侥幸。因为侥幸而留的雷,现在不出问题,将来一定会出问题;不优化不出问题,优化就出问题。
最后要说,每个应用程序,都让他开优化运行,只要时间允许,一定要查出开优化后出问题的原因。时间不允许,只能不开优化凑合着,在有时间的时候继续查问题。 参考技术B 我不是很清楚的
如何在 Exec Maven 插件执行中继续并且不会因错误而失败?
【中文标题】如何在 Exec Maven 插件执行中继续并且不会因错误而失败?【英文标题】:How to continue and not fail build on error in Exec Maven Plugin execution? 【发布时间】:2021-04-12 22:44:22 【问题描述】:尽管 Maven exec 插件添加的其中一个执行出现错误,如何使 maven 构建继续?
https://www.mojohaus.org/exec-maven-plugin/usage.html
【问题讨论】:
【参考方案1】:使用成功代码的示例解决方案:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<id>docker-rmi</id>
<phase>clean</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>docker</executable>
<workingDirectory>$project.basedir</workingDirectory>
<arguments>
<argument>rmi</argument>
<argument>$project.groupId/$project.artifactId:$project.version</argument>
</arguments>
<successCodes>
<successCode>0</successCode>
<successCode>1</successCode>
</successCodes>
</configuration>
</execution>
</executions>
</plugin>
【讨论】:
【参考方案2】:您可以使用successCodes
并列出您希望视为成功的错误代码。
这是根据文档 docs 为不合规的应用程序创建的,但它对这种情况很有用。
我不知道任何通配符解决方案,因此您必须明确说明successCodes
的错误代码列表。
【讨论】:
以上是关于如何防止因编译器开启优化,而导致程序执行错误的主要内容,如果未能解决你的问题,请参考以下文章