【问题标题】:-O2 option makefile-O2 选项生成文件
【发布时间】:2014-02-11 13:52:24
【问题描述】:

我的主函数创建了一个 ClassA 对象,该对象又创建了一个线程,该线程定期调用 ClassA 对象的函数。我的问题是,当我在没有优化的情况下调用 make 时,生成代码运行良好,但使用 -O2 优化时,我得到了一个段错误+++ killed by SIGSEGV +++。你知道我应该检查什么才能让它使用 -O2 选项运行吗?

【问题讨论】:

  • 我们需要看代码来帮助你的代码。
  • 运行valgrindhelgrindmemcheck工具来检查多线程问题和内存问题。
  • 一个好的开始是检查您是否正确初始化所有内容,并仔细检查您的所有内存写入是否“允许”(不超出限制)。并向我们​​展示 ClassA 代码 :)

标签: c++ makefile options


【解决方案1】:

寻找您使用未定义行为的任​​何地方。优化只能保证已定义的行为会匹配未优化的代码,未定义的行为很可能会发生变化。

如其他地方所述,线程和未初始化的变量是一个很好的起点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-27
    • 1970-01-01
    • 2021-07-22
    • 2019-03-02
    • 2012-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多