使用 gcc-4.8.5 编译但适用于 gcc-4.6.4 时,C++ 异常未在 Raspberry Pi 上捕获

C++ Exceptions not being caught on Raspberry Pi when compiled with gcc-4.8.5 but works with gcc-4.6.4

编辑:我的代码没有这个问题,它已经在许多其他问题上进行了测试,没有问题。这是一个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
}

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