編集:この問題は私のコードでは解決されていない。これはgccのクロスコンパイルの問題です。gcc-4.8.5でコンパイルしたときにC++の例外がRaspberry Piで捕捉されないが、gcc-4.6.4で動作する
gb-4.6.4を使用すると、すべてがうまくいくように見えますが、g ++でUbuntu x64で大きなC++プログラムをクロスコンパイルしています。 gcc-4.8.5を使用すると、例外が漏れてプログラムが強制終了するように見えます。私はgcc-4.8.5を使って例外をキャッチするという最小限の例を試しましたが、最小限のケースは適切に動作するようです。私の実際のプログラムははるかに複雑で、例外キャッチがどこかで失われているようです。
例外処理を改善するいくつかのg ++設定がありますか?
私は1.22
編集をcrosstoolsが-ngのツールチェーンをコンパイルしています:これは、コードが何をしているのか、本質的である:
//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
}
Cライブラリから呼び出されたC++コールバックから例外がスローされている可能性はありますか? – rodrigo
私は、問題があなたのコードのどこかにあると確信しています。最小限の例を抽出する。 –
このコードは、問題のない複数のプラットフォームで広範にテストされています。この問題は、gcc-4.8 armhfでのみ発生します。私は最小限の例で問題を再現できず、コードは独自のものです。 – John