サードパーティライブラリを使用せずに、Swift 3.0を使用してiOS 10以降のクラッシュをキャプチャするための基本コードを書き込もうとしています。iOS 10でクラッシュをキャプチャする方法iOS 10のみを使用する
私は、次の機能が見つかりました:
// Capturing exceptions
NSSetUncaughtExceptionHandler { exception in
print("Exception: \(exception.name) \(exception.reason!)\(exception.description)")
print(exception.callStackSymbols)
}
// Capturing other crashes - **is this enough ????**
// I wrote these in application didFinishLaunchingWithOptions method, but these don't get called.
signal(SIGABRT) {(a) in
print(a)
}
signal(SIGABRT){(a) in
print(a)
}
signal(SIGILL){(a) in
print(a)
}
signal(SIGSEGV){(a) in
print(a)
}
signal(SIGFPE){(a) in
print(a)
}
signal(SIGBUS){(a) in
print(a)
}
signal(SIGPIPE){(a) in
print(a)
}
1 - 十分なこれらの方法はありますか?
2 - もしそうなら、どこでクラッシュをキャプチャする必要がありますか?
トリガするために、私は私がプロジェクトに持っている唯一のViewControllerオブジェクトののviewDidLoadで、次の方法を書いたクラッシュ:
しかし、この方法は私にEXC_BREAKPOINTを与え、上記のいずれかのクラッシュではありません。
3 - どのようにキャプチャできますか?EXC_BREAKPOINTはプログラムによって設定されていますか?
4 - クラッシュを誘発する方法はありますか?
私は楽しく教育的な目的のためにこれをやっています。シグナルハンドラのメリットとして、自分の答えに投稿したものに同意しますか?私は "signal(SIGTRAP){(a)in print(a)}"を使ってアプリケーションで修正しました。残念ながら、私は私のアプリを実行すると、印刷コードは実行されません。何か不足していますか?そのプリントをどのようにして得ることができますか?ありがとう! – mm24