编辑:这个问题不是我的代码,它已经在许多其他问题上进行了测试而没有问题。这是一个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
}
答案 0 :(得分:1)
通过设置-O0关闭优化似乎可以解决问题。这个bug似乎特定于gcc 4.8.5 ARMv6硬浮构建。