IPhone Simulatorで生成されたクラッシュログはありますか?
シミュレータは頻繁にクラッシュしますが、コンソールにトレースを残しません...クラッシュログが役立ちます。
コンソールには、シミュレーターで実行されているアプリからのNSLog()
出力が表示されます。クラッシュログはファイルに保存されます。
私は私のホームディレクトリの下でいくつかを見つけました
~/Library/Logs/DiagnosticReports/
ファイルの拡張子は.crash
です
デバッガーがEXC_BAD_ACCESS
信号を取得した場合でも、それらを生成する方法は、まだ理解できていません。
更新
現在、(OSX 10.11.6)、. crashは~/Library/Logs/DiagnosticReports
にログを記録しますが、これはエミュレーター自体がクラッシュするときです。 appクラッシュ(ただし、エミュレーターデバイスは引き続き正常に実行されています)のログは、次のとおりです。
〜/ Library/Logs/CoreSimulator
クラッシュごとに、一意のIDを持つサブフォルダーがあります。日付でソートして、最近のクラッシュが最初のサブフォルダーになるようにします。その中から、stderr.log
とsystem.log
を確認することから始めます。
CoreSimulator
の直下も、CoreSimulator.log
およびSimulator.log
を参照してください。
UtilitiesにあるOS X Consoleアプリでこれを見ることができると確信しています。私が間違っている場合、私にこれを削除するので、私に完全に投票してください。
更新:
具体的には(OSX 10.11.6以降)、
エミュレーターでアプリがクラッシュすると、サブフォルダー(一意のID)が次の場所に追加されます。
〜/ Library/Logs/CoreSimulator
その中で、stderr.log
およびsystem.log
。
エミュレータそれ自体がクラッシュすると、サブフォルダが追加されます:
〜/ Library/Logs/DiagnosticReports
このパスと混同しないでください
/ライブラリ/ Logs
(~
開始時)、Macに関するさまざまなレポートがあります。
これは特別な場合に私のために働いたものです...私のアプリは終了時にSIGKILLでクラッシュしていました。 main.mに数秒間例外が表示されると、アプリの終了が完了するため、バックトレースを取得する機会がなくなります。
「シミュレータはクラッシュログをどこに保存するか」について多くの検索を行いましたが、答えを見つけることができませんでした。ただし、次のトリックが非常に便利で、その場でクラッシュログを取得できました。
基本的に、/ Applications/Utilities/CrashReporterPrefs.appを開き、設定を「Developer」に変更します。これにより、CrashReporterは、アプリがクラッシュした後、クラッシュログを含むポップアップを表示します。
Appleのこのドキュメントの「iOSシミュレータコンソールとクラッシュログの表示」セクションでこれを見つけました。 http://developer.Apple.com/library/ios/#documentation/Xcode/Conceptual/ios_development_workflow/125- Using_iOS_Simulator/ios_simulator_application.html
これははるかに信頼できます。ほんの数ステップで、ソース行番号のメソッド名を見つけることができました。
クラッシュクラッシュログは〜/ Library/Logs/CrashReporterの下に表示されます。
Xcodeは接続されたデバイスからクラッシュログを取得すると、〜/ Library/Logs/CrashReporter/MobileDeviceのサブフォルダーに保存します。
私にとっては、デバッガーウォッチウィンドウに追加した式でした。ブレークポイントにヒットすると、不正な式によりXCodeがセグメンテーション違反になりました。