Objective-Cアプリケーションでシグナルハンドラを使用して、致命的なエラーをキャッチするには、SIGSEGV
、SIGBUS
などがあります。Xcode:GDBとシグナルハンドラ
このような信号が発生すると、バックトレースとエラーの詳細がログファイルに書き込まれます(リエントラント問題が発生する可能性がありますが、それは問題ではありません)。
このようにして、次の起動時にアプリケーションがクラッシュしたことを知ることができ、ユーザーにバグレポートを記入するかどうか尋ねることができます。
アプリを手動で起動するとうまくいきます。
しかし、Xcode(GDBを使用)から実行すると、シグナルハンドラは呼び出されません。
signal
またはsigaction
に設定しようとしましたが、違いはありません。
また、私はinfo signals
で、これらの信号がpass
に設定されていることを確認しました。これはアプリケーションに渡す必要があることを意味します。
これは大したことではありません。私はアプリケーションをデバッグしているときにこの問題が発生していますが、GDBでもその問題を解決するのは非常に良いことです。
このような問題を経験し解決した人はいますか?
これらの信号をgdbのnostopに設定しようとすると、アプリケーションによって管理される可能性があります。 – steve
私は質問をする前にそれを試みましたが、うまくいかなかったので間違いをしました。今日はもう一度試してみましたが、魅力的に働いています。あなたはこれで答えを記入することができますので、私はそれを受け入れることができます。ありがとう:) – Macmade