0

编辑:这个问题与我的代码无关,它已经在许多其他问题上进行了测试,没有问题。这是一个 gcc 交叉编译问题。

我在 Ubuntu x64 上使用 g++ 交叉编译一个大型 C++ 程序,以便在 Raspberry Pi 2 上运行。使用 gcc-4.6.4 时,一切似乎都正常。使用 gcc-4.8.5 时,异常似乎正在泄漏并导致程序中止。我已经尝试了一个使用 gcc-4.8.5 进行异常捕获的最小示例,并且最小的情况似乎确实可以正常工作。我的实际程序要复杂得多,似乎异常捕获在某处丢失了。

是否有一些我缺少的 g++ 设置可以改进异常处理?

我正在使用 crosstools-ng 1.22 编译工具链

编辑:这基本上是代码正在做的事情:

//error_function may be deeper in the stack
void error_function()
{
    throw std::runtime_error("This is an error");
}

try
{
    error_function();
}
catch (std::exception&)
{
   //Not being caught
}
4

1 回答 1

1

通过设置 -O0 关闭优化似乎可以解决问题。这个错误似乎特定于 gcc 4.8.5 ARMv6 硬浮点构建。

于 2016-04-04T20:08:17.850 回答