1

(Dracoは、以下のチェックされた応答で優れたアイデアを提供しました。)

このクラッシュは、カスタムURLがアプリデリゲートによって処理され、別のスレッドで操作が開始されたときにプログラムで発生します。操作が終了し、UIで結果を確認できる場合があります。しかし、それは常にクラッシュしています。

これは、デバッガーなしで実行している場合にのみ発生します。クラッシュログは次のとおりです。

0   libobjc.A.dylib                 0x37d9ff7e objc_msgSend + 22
1   CoreData                        0x3634bbd2 -[_PFManagedObjectReferenceQueue _processReferenceQueue:] + 934
2   CoreData                        0x3634efd0 _performRunLoopAction + 196
3   CoreFoundation                  0x359d2b14 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 12
4   CoreFoundation                  0x359d0d50 __CFRunLoopDoObservers + 252
5   CoreFoundation                  0x359d10aa __CFRunLoopRun + 754
6   CoreFoundation                  0x3595449e CFRunLoopRunSpecific + 294
7   CoreFoundation                  0x35954366 CFRunLoopRunInMode + 98
8   GraphicsServices                0x375f0432 GSEventRunModal + 130
9   UIKit                           0x33460cce UIApplicationMain + 1074
10  myApp                           0x000e2770 main (main.m:15)
11  myApp                           0x000e2728 start + 32

イベント、より具体的には通知に応答しようとしているように見えます。その場合は、タグ付けされたオブザーバーが削除されたか、追加されたオブジェクトの割り当てが解除されたと推測されます。

通知を傍受して、通知の内容を確認する方法はありますか?可能であれば、どのオブザーバーが欠落しているかを特定するか、少なくともそれを絞り込むことができます。


すべての例外ブレークポイントに関するWrightsCSのポイントに対処するために更新が追加されました。これらは両方ともBreakOnThrowに設定されていますが、すべて例外です。(ブレイクオンキャッチも機能しません。)

ここに画像の説明を入力してください

デバッガーで実行中に例外やクラッシュが発生しない場合、これはどのように機能しますか?

アップデート2

他のユーザーによる検索のより一般的な範囲を提供するためにタイトルが変更されました。だった:「アプリはデバッガーなしではクラッシュしますが、デバッガーなしではクラッシュしません。クラッシュログから何がわかりますか?」

4

1 に答える 1

3

これは明示的な質問には答えませんが、暗黙の質問には答えます。

「デバッガーがクラッシュせず、クラッシュログに詳細がない場合、クラッシュをデバッグするにはどうすればよいですか?」

XCode Organizerで、クラッシュログだけでなくそれ以上のものを見ることができます。「オーガナイザーデバイス」セクションのコンソール出力を見てください。クラッシュしたデバイスを確認し、[コンソール]をクリックします。デバッガーで実行されていない場合でも、NSLogステートメントからのデバッグ出力を確認できるはずです。

デバッガーが実行されていない場合でも、アプリケーションの実行中にXCodeでこれを確認できます。

コンソールにはアプリケーションの出力以上のものが表示されるため、アプリケーションの出力を確認するには、コンソールをふるいにかける必要があります。対応する行にアプリケーション名が表示されます。

これは、デバッグ、アドホック、またはリリース用にコンパイルされたコードを使用して実行できます。他の人のアプリで試してみてください。(Twitterで試してみてください。そこにデバッグログが表示されます。Safariで試してみてください。中断されている他のアプリがjetsamによって強制終了される可能性があります。)

クラッシュした行は表示されない場合がありますが、デバッグコードを慎重に挿入することで、行を絞り込むことができるはずです。

于 2012-07-13T07:37:59.963 に答える