2011-09-16 4 views
5

Objective-Cアプリケーションでシグナルハンドラを使用して、致命的なエラーをキャッチするには、SIGSEGVSIGBUSなどがあります。Xcode:GDBとシグナルハンドラ

このような信号が発生すると、バックトレースとエラーの詳細がログファイルに書き込まれます(リエントラント問題が発生する可能性がありますが、それは問題ではありません)。

このようにして、次の起動時にアプリケーションがクラッシュしたことを知ることができ、ユーザーにバグレポートを記入するかどうか尋ねることができます。

アプリを手動で起動するとうまくいきます。

しかし、Xcode(GDBを使用)から実行すると、シグナルハンドラは呼び出されません。

signalまたはsigactionに設定しようとしましたが、違いはありません。

また、私はinfo signalsで、これらの信号がpassに設定されていることを確認しました。これはアプリケーションに渡す必要があることを意味します。

これは大したことではありません。私はアプリケーションをデバッグしているときにこの問題が発生していますが、GDBでもその問題を解決するのは非常に良いことです。

このような問題を経験し解決した人はいますか?

+0

これらの信号をgdbのnostopに設定しようとすると、アプリケーションによって管理される可能性があります。 – steve

+0

私は質問をする前にそれを試みましたが、うまくいかなかったので間違いをしました。今日はもう一度試してみましたが、魅力的に働いています。あなたはこれで答えを記入することができますので、私はそれを受け入れることができます。ありがとう:) – Macmade

答えて

1

これらの信号をgdbのnostopに設定しようとすると、アプリケーションによって管理される可能性があります。

関連する問題