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