我正在使用 Raisonance 的 Ride7/Codesourcery(又名 Sourcery CodeBench Lite)和 STM32F4 板来开发裸机 HMI 平台。
我将在这个系统中使用 C++ 异常,但是我抛出的任何异常都以写入 stderr 的“递归调用终止”错误结束。
重现问题的代码:(main.cpp)
int main(void)
{
try {
throw 1;
}
catch (...) {
printf("caught");
}
}
我已经尝试过 Raisonance 和其他来源的解决方案,但没有收到任何可行的帮助。
潜在问题/解决方案 1:
我在其他论坛上问过,他们提到我需要在我的启动程序集文件中调用静态结构来初始化展开表(至少我认为他们在谈论),但我不知道如何做到这一点。
潜在问题/解决方案 2
我还在 binutils/gas 中发现了一个错误,这可能是我的问题的根源(http://sourceware.org/bugzilla/show_bug.cgi?id=13449)。我一直在尝试使用此补丁构建我自己的工具链版本,但这正在变成一个自己的项目,并且尚未成功。
问题
我是否需要在代码中做一些事情来利用 C++ 异常,或者这可能是工具链中的错误?如果是前者,请详细说明。