使用gcc-4.8.5编译但使用gcc-4.6.4时,Raspberry Pi上没有发现C++异常

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

本文关键字:gcc-4 Pi Raspberry 发现 异常 C++ 4时 编译 使用      更新时间:2023-10-16

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

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

我是否缺少一些g++设置来改进异常处理?

我正在用交叉工具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关闭优化似乎可以解决问题。这个bug似乎是gcc 4.8.5 ARMv6硬浮动构建特有的。