如何防止因编译器开启优化,而导致程序执行错误

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 的错误代码列表。

【讨论】:

以上是关于如何防止因编译器开启优化,而导致程序执行错误的主要内容,如果未能解决你的问题,请参考以下文章

volatile

Xcode 编译因内部错误而失败

Visual Studio-编译优化问题

Swift 编译器错误命令因信号而失败:分段错误:11

如何防止网站因改版导致权重下降?

openssh-7.7p1编译安装