iPhoneシミュレーターによって生成されたクラッシュログ?


96

iPhone Simulatorによって生成されたクラッシュログはありますか?

シミュレータは頻繁にクラッシュしますが、コンソールにトレースが残されません...クラッシュログは役に立ちます。


2
なぜクラッシュログが必要なのかよくわかりません。シミュレーターのアプリがクラッシュしたが、デバッグを停止する前に、gdbプロンプトで「backtrace」に「bt」と入力すると、クラッシュログに表示される内容が正確に表示されます。(質問のネクロマンシーがあったことに気づかなかった、翌年を逃した)
Matthew Frederick

3
デバッガーに接続していないときにのみクラッシュが発生した場合は、ログが必要になります。
Ian1971 2011

あなたが正しい。これは理にかなっています!
ラプター2011

Xcode(cmd-8)の「レポートナビゲーター」でデバッグログ(lldbコマンドの出力を含む)を確認することもできます。これは、以前の実行のデバッグ出力を確認する場合にも役立ちます。デバッガーが接続されていない場合、これは明らかに機能しません。
Sebastien Martin

2
デバッグログはクラッシュログと同じではありませんが、どちらのログも問題のデバッグに役立ちます。
ラプター

回答:


157

コンソールにはNSLog()、シミュレーターで実行されているアプリからの出力が表示されます。クラッシュログはファイルに保存されます。

私は私のホームディレクトリの下にいくつかを見つけました

~/Library/Logs/DiagnosticReports/

それらのファイル拡張子は .crash

まだ理解していないのは、デバッガーがEXC_BAD_ACCESSシグナルを取得した場合でも、それらを生成する方法です。


更新

現在(OSX 10.11.6)の.crash ~/Library/Logs/DiagnosticReports、エミュレータ自体がクラッシュしたときにログインしますアプリがクラッシュした(ただし、エミュレーターデバイスはまだ正常に動作している)ログは、次の場所にあります。

〜/ライブラリ/ Logs / CoreSimulator

クラッシュごとに、一意のIDを持つサブフォルダーがあります。最近のクラッシュが最初のサブフォルダーになるように、日付で並べ替えます。その内部では、見てから始めるstderr.logsystem.log

また、直接の下でCoreSimulator見る、CoreSimulator.logSimulator.log


これらのログがコンソールに表示される代わりにファイルに書き込まれる理由は何ですか?ところで、情報ありがとうございます。
アクア

11
iPhoneまたはiPadシミュレーターのクラッシュレポートがこのディレクトリに表示されません。おそらく、この回答を更新する必要がありますか?
ジャスティン

3
おそらく更新が必要ですが、反対票はそれを奨励するための非常に丁寧な方法ではありません。
ohhorob

2
上記のディレクトリでクラッシュレポートを見つけましたが、レポートは1つしかなく、最新のレポートではありませんでした(つまり、アプリでいくつかのことを試し続けたところ、クラッシュし続けました)。クラッシュはすべて同じだったので、問題ではありませんでしたが、これが一般的なケースかどうか疑問に思いますか?
Samik R

10
ジャスティンとオーホロブの両方が正しい。Xcodeなしでシミュレーターでアプリを起動し、ログインを確認するにはクラッシュを再現する必要があります~/Library/Logs/DiagnosticReports/
Dave Chambers

20

UtilitiesにあるOS X Consoleアプリでこれを確認できると思います。でも、もし私が間違っている場合は、必ず投票して、これを削除してください。


更新:

具体的には(OSX 10.11.6以降)、

アプリがエミュレーターでクラッシュすると、サブフォルダー(一意のIDを持つ)が次の場所に追加されます。

〜/ライブラリ/ Logs / CoreSimulator

その中で、調べることから始めstderr.logsystem.log

エミュレータ自体がクラッシュすると、サブフォルダが次の場所に追加されます。

〜/ライブラリ/ Logs / DiagnosticReports

このパスと混同しないでください

/ライブラリ/ Logs

~最初に欠けている)、あなたのMacについてのさまざまなレポートがあります。



シミュレータではなく、iPhoneデバイスにのみ適用されるようです。私が間違っていたら私を訂正してください。
ラプター

7
コンソールは、Cmd- /を押すか、Debug / Open System Log ...メニューオプションを使用して、シミュレータから開くことができます。
lambmj 14年

5

これは特別な場合に私のために働いたものです...私のアプリはSIGKILLが終了するとクラッシュしました。main.mで数秒間例外が表示され、その後アプリが終了するため、バックトレースを取得できません。

私は「シミュレーターがクラッシュログをどこに保存するのか」を何度も検索しましたが、答えを見つけることができませんでした。ただし、次のトリックは非常に便利で、その場でクラッシュログを取得できました。

基本的に、/ Applications / Utilities / CrashReporterPrefs.appを開き、設定を「開発者」に変更します。これにより、アプリがクラッシュした後、CrashReporterがクラッシュログを含むポップアップを表示します。

これはAppleのこのドキュメントの「iOSシミュレータコンソールとクラッシュログの表示」セクションで見つかりました:http : //developer.apple.com/library/ios/#documentation/Xcode/Conceptual/ios_development_workflow/125-Using_iOS_Simulator/ios_simulator_application。 html


ちなみに、私が研究していたことをSIGKILLと元の問題は、非問題であることが判明:stackoverflow.com/questions/7901262/...
dana_a

Application / UtilitiesにCrashReporterPrefsアプリがなかったことを指摘しておきますが、それを検索したところ、他の場所でアプリを見つけることができました。
ジャスティン

@ジャスティンどこで見つけたの?
Ohad Schneider

1
ツールは、上記に言及することを注記は、「Xcodeのためのその他のツール」と呼ばれるバンドル内のXcodeからダウンロード可能ですdeveloper.apple.com/download/more/...
markshiz

1

これははるかに信頼性が高いです。ほんの数ステップで、ソース行番号とメソッド名を見つけることができました。

  1. .appおよび.dSYMファイルがあるディレクトリにcdします
  2. /Developer/Platforms/iPhoneOS.platform/Developer/usr/libexec/gdb/gdb-arm-apple-darwin MyApp.app/MyAppを実行します
  3. 印刷asm-demangleをオンに設定します
  4. 印刷シンボルファイル名をオンに設定
  5. p / a 0×00015c64->「コンソール」アプリでクラッシュログを開くか、.crashファイルをダブルクリックして取得したアドレス。

3
なぜクラッシュログが必要なのかよくわかりません。シミュレーターのアプリがクラッシュしたが、デバッグを停止する前に、gdbプロンプトで「backtrace」に「bt」と入力すると、クラッシュログに表示される内容が正確に表示されます。
マシューフレデリック

この方法は、クライアントの電話からのクラッシュログに最適です。
ガンマポイント

1

クラッシュクラッシュログは〜/ Library / Logs / CrashReporterの下に表示されます。

  • iPhoneシミュレータープログラムがクラッシュした場合(シミュレーター内で実行されているiPhoneアプリではありません)、iPhoneSimulatorのエントリがあります。
  • シミュレーター内のiPhoneアプリがクラッシュした場合、アプリの表示名とともにクラッシュログが表示されます。

Xcodeが接続されたデバイスからクラッシュログを取得すると、〜/ Library / Logs / CrashReporter / MobileDeviceのサブフォルダーに保存します


これは1年以上後ですが、〜/ Library / Logs / DiagnosticReports ...で「シミュレーター内のアプリ」のクラッシュが発生し、次のようになります。MobileSafari_2013-03-21-155844_My-MacBook-Pro.crash
Rob

0

私にとっては、デバッガのウォッチウィンドウに追加した式でした。ブレークポイントがヒットしたとき、不適切な表現が原因でXCodeがsegfaultを引き起こしていました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.