呼び出しをステップオーバーしようとするたびに、アプリケーションがクラッシュします。デバッガーがなくても正常に動作します。
また、シミュレータでアプリを実行すると、デバッガの有無にかかわらず正常に動作します。
最近、Mac OS X 10.8を10.9(Mavericks)にアップグレードしました。アップグレード前に問題はありませんでした。
何が原因で、どのように修正できますか?
以下はバックトレースです。私のアプリはARCを使用しています。ゾンビを有効にし、例外ブレークポイントを追加しましたが、検出された例外ゾンビと例外ブレークポイントがトリガーされることはありません。
* thread #1: tid = 0x2503, 0x00000000, queue = 'com.Apple.main-thread, stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
frame #0: 0x00000000
frame #1: 0x35e170c4 UIKit`-[UIApplication sendAction:to:from:forEvent:] + 72
frame #2: 0x35e17076 UIKit`-[UIApplication sendAction:toTarget:fromSender:forEvent:] + 30
frame #3: 0x35e17054 UIKit`-[UIControl sendAction:to:forEvent:] + 44
frame #4: 0x35e1690a UIKit`-[UIControl(Internal) _sendActionsForEvents:withEvent:] + 502
frame #5: 0x35e16e00 UIKit`-[UIControl touchesEnded:withEvent:] + 488
frame #6: 0x35d3f5f0 UIKit`-[UIWindow _sendTouchesForEvent:] + 524
frame #7: 0x35d2c800 UIKit`-[UIApplication sendEvent:] + 380
frame #8: 0x35d2c11a UIKit`_UIApplicationHandleEvent + 6154
frame #9: 0x37a1e5a2 GraphicsServices`_PurpleEventCallback + 590
frame #10: 0x37a1e1d2 GraphicsServices`PurpleEventCallback + 34
frame #11: 0x33ef9172 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 34
frame #12: 0x33ef9116 CoreFoundation`__CFRunLoopDoSource1 + 138
frame #13: 0x33ef7f98 CoreFoundation`__CFRunLoopRun + 1384
frame #14: 0x33e6aebc CoreFoundation`CFRunLoopRunSpecific + 356
frame #15: 0x33e6ad48 CoreFoundation`CFRunLoopRunInMode + 104
frame #16: 0x37a1d2ea GraphicsServices`GSEventRunModal + 74
frame #17: 0x35d80300 UIKit`UIApplicationMain + 1120
frame #18: 0x000faac8 MyApp`main(argc=1, argv=0x2fd0fd08) + 116 at main.m:16
編集:
最新のXcodeバージョン5.0.1(5A2053)を使用しています。
新しいアプリをゼロから作成し、問題なく実行しました。次に、ViewController
のviewDidLoad
にブレークポイントを設定して、ステップオーバーを試みました。ここで私は別のクラッシュを得た
* thread #1: tid = 0x2503, 0x3bb9d7c4 libobjc.A.dylib`objc_msgSendSuper2 + 4, queue = 'com.Apple.main-thread, stop reason = EXC_BAD_ACCESS (code=1, address=0x4)
frame #0: 0x3bb9d7c4 libobjc.A.dylib`objc_msgSendSuper2 + 4
frame #1: 0x000b913a test`-[ViewController viewDidLoad](self=0x1cda5c70, _cmd=0x361bd5db) + 62 at ViewController.m:19
frame #2: 0x35d4b594 UIKit`-[UIViewController loadViewIfRequired] + 364
frame #3: 0x35d8bd78 UIKit`-[UIWindow addRootViewControllerViewIfPossible] + 64
frame #4: 0x35d87aec UIKit`-[UIWindow _setHidden:forced:] + 364
frame #5: 0x35dc91e8 UIKit`-[UIWindow makeKeyAndVisible] + 60
frame #6: 0x35d8c83e UIKit`-[UIApplication _callInitializationDelegatesForURL:payload:suspended:] + 1666
frame #7: 0x35d8484a UIKit`-[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 698
frame #8: 0x35d2cc38 UIKit`-[UIApplication handleEvent:withNewEvent:] + 1004
frame #9: 0x35d2c6cc UIKit`-[UIApplication sendEvent:] + 72
frame #10: 0x35d2c11a UIKit`_UIApplicationHandleEvent + 6154
frame #11: 0x37a1e5a2 GraphicsServices`_PurpleEventCallback + 590
frame #12: 0x37a1e1d2 GraphicsServices`PurpleEventCallback + 34
frame #13: 0x33ef9172 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 34
frame #14: 0x33ef9116 CoreFoundation`__CFRunLoopDoSource1 + 138
frame #15: 0x33ef7f98 CoreFoundation`__CFRunLoopRun + 1384
frame #16: 0x33e6aebc CoreFoundation`CFRunLoopRunSpecific + 356
frame #17: 0x33e6ad48 CoreFoundation`CFRunLoopRunInMode + 104
frame #18: 0x35d83484 UIKit`-[UIApplication _run] + 668
frame #19: 0x35d80300 UIKit`UIApplicationMain + 1120
frame #20: 0x000b93bc test`main(argc=1, argv=0x2fd51d30) + 116 at main.m:16
frame #21: 0x3bfd9b20 libdyld.dylib`start + 4
編集2:
デバイスでアプリを実行中にXCode 5がクラッシュする のGreg Claytonは、以下を提案します
Others have seen this issue.
A few things to try:
1 - Reboot your device and try again. The theory is an old developer disk image is already mounted and won't be unmounted until you reboot.
2 - Re-install the OS on the device
Hopefully #1 fixes your issue. Others have done #2 and had their issue fixed, but hopefully it doesn't require an OS re-install.
私は両方をしましたが、助けにはなりませんでした。
私は別のデバイスを使用しようとしましたが、違いが生じました。 iOS 6.1でiPod Touchを使用しているが、iOS 7.0.2でiPadが正常に動作する場合、例外は依然として存在します。
そのため、問題はデバイスにインストールされているiOSバージョンに関連しているようです。私はまだそれを修正するために何をすべきかわからない。
編集3:
コマンドラインツールのバージョンはXcodeバージョンと一致します(実際には、コマンドラインツールのバージョンは1つしかありません)。
問題はおそらくデバッグ中のコードとは関係ありません。 Xcodeで作成された新しく作成されたシングルビューアプリケーションでクラッシュします。そして、些細なコードをステップオーバーするとクラッシュします:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
私 尋ねた on Apple Developer Forumで、Jason Molendaから次の応答を得た:
ここで見ているようなバグを追跡しています。これは微妙なタイミングの問題であり、わずかに遅いホストマシンまたはわずかに遅いデバイスがヒットする必要があります。これは主にiPhone 4であり、iOS 7でも同様です。iOS6では、iPhone 4およびiPhone 3GSデバイスで最も多く見られます。 ...この問題は、Xcode 5.0.1でのみ発生します。
したがって、Xcodeのバグのようです。
OK、これは間違いなくXcode 5.0.1のバグです。
これはJason Molendaによって確認されています on Apple Developer Forum 。現時点での唯一の回避策は Xcodeの古いバージョン と古いバージョンを使用することですXcode 5はOS X 10.8.4を必要とするため、Mac OS Xの。
この問題の修正に関するETAの発表はありません。 Apple開発者フォーラムには答えがありません。
UPDATE 06-Nov-2013:
本日、Xcode 5.0.2のプレリリース版が developer.Apple.com で利用可能になりました。このバージョンでは、(特に)次の問題が修正されます。
IOS 6.xを実行しているデバイスでアプリケーションをデバッグすると、EXC_BAD_ACCESSでアプリケーションがクラッシュします。これは解決されました。 (15310896)
新しいバージョンをインストールしましたが、実際に問題はなくなりました。これで、6.xデバイスでアプリを再度デバッグできるようになりました。
thread on Apple Developer Forum のJason Molendaは言った:
このXcode 5.0.2シードを使用して、アプリをアプリストアに送信できると言われています。
まったく同じバグがあることを確認します。私のアプリはうまくいきました。 Xcode 5へのアップグレードとMavericksのコードは機能しますが、デバッグするとき、EXC_BAD_ACCESSを取得するときに特定の行をステップオーバーできません。
そのため、Step Overで渡すことができない行を覚えて、これらの行の後にブレークポイントを配置するか、Continue to Lineを使用してこれらの問題のある行をジャンプする必要があります。
[〜#〜] ps [〜#〜]
ダウンロード済みXcode 5.0.2 GM seed
とデバッグがはるかに優れています。これまでのところ、新しいXcodeで30分を費やしました。
開発者サイトにログインして Xcode 5.0.2 GM seed をダウンロードしてください。このバグは修正されました。
リリースノート を参照してください。
2013年11月12日更新
Xcode 5.0.2がリリースされました。 開発センター からダウンロードできます。