2011-07-14 11 views
1

私は埋め込みLinux用にC++アプリケーションを書いています。メインスレッド以外のスレッドで発生する未処理の例外やセグメンテーションフォルトなどのランタイムエラーがコンソールに表示されないという問題があります。そのような場合、私のアプリケーションはエラーメッセージなしで突然終了します。親のメインスレッドのデフォルトコンソールにエラーメッセージを表示する方法はありますか? (gdbは私の組み込みLinuxではサポートされていません)スレッドで見えないランタイムエラー

+0

ログに書き込みますか? - 大きな文字バッファをミューテックスし、スレッドに書き込んだり、ログにダンプしたりすることができます。 – Schnommus

+0

'未処理の例外 'をキャッチしてこれらをログファイルに書き込むスレッドラッパーを書くことは想像できますが、' segmentation faults'のような実際の 'runtime-errors'はログファイルにキャッチ/ダンプされるべきですか? – Dudero

+1

@Dudero:Linuxは、シグナル処理と呼ばれるメカニズムを使用して、さまざまなハードウェアエラーを検出できます。 – Puppy

答えて

0

runtime-errorsファイルがsyslogファイルに表示されていることがわかりました。これは私の要件を完全に満たしています。

4

スレッド関数から例外を伝播させないでください。通常は、スレッド関数の本体の周りにcatch all例外ハンドラがあります。これらの例外をどのように処理するかは、あなたの責任です。

+0

私はあなたに同意してくれてありがとう、スレッド機能を残して防ぐために常にキャッチ(...) 'ブロックがあるべきである。 – Dudero

関連する問題