32

呼び出しをステップ オーバーしようとするたびに、アプリケーションがクラッシュします。デバッガーがなくても問題なく動作します。

また、シミュレーターでアプリを実行すると、デバッガーの有無にかかわらず正常に動作します。

最近、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'sに入れ、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 Crashes while running the app on deviceの 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.
}

Apple Developer Forumで質問したところ、Jason Molenda から次のような回答がありました。

ここに表示されているようなバグを追跡しています。これは微妙なタイミングの問題で、わずかに遅いホスト マシンまたはわずかに遅いデバイスでヒットする必要があります。iOS 7 でこれが見られるのは、主に iPhone 4 と同様のものです。... この問題は Xcode 5.0.1 でのみ発生します。

つまり、Xcode のバグのようです。

4

3 に答える 3

23

わかりました、これは間違いなく Xcode 5.0.1 のバグです。

これは、Apple Developer Forum のJason Molenda によって確認されています。Xcode 5 には OS X 10.8.4 が必要なため、今のところ唯一の回避策は、古いバージョンの Xcodeと古いバージョンの Mac OS X を使用することです。

この問題の修正に関する発表済みの ETA はありません。Apple Developer Forum での ETA に関する直接の質問には、回答がありません。

2013 年 11 月 6 日更新:

本日、Xcode 5.0.2 のプレリリース バージョンがdeveloper.apple.comで利用可能になりました。このバージョンでは、(とりわけ) 次の問題が修正されています。

iOS 6.x を実行しているデバイスでアプリケーションをデバッグすると、アプリケーションが EXC_BAD_ACCESS でクラッシュします。これは解決されました。(15310896)

新しいバージョンをインストールしましたが、問題は実際になくなりました。これで、6.x デバイスでアプリを再びデバッグできるようになりました。

Apple Developer Forumのスレッドで Jason Molenda は次のように述べています。

この Xcode 5.0.2 シードを使用して、アプリをアプリ ストアに送信できるとのことです。

于 2013-10-31T05:00:51.293 に答える
3

まったく同じバグがあることを確認しました。私のアプリはうまくいきました。Xcode 5 にアップグレードすると Mavericks コードが機能しますが、デバッグ時に EXC_BAD_ACCESS を取得するため、特定の行をステップ オーバーできません。

そのため、Step Over で通過できない行を覚えておいて、これらの行の後にブレーク ポイントを配置するか、Continue to Line を使用してこれらの問題のある行をジャンプする必要があります。

PS

ダウンロードXcode 5.0.2 GM seedとデバッグははるかに優れています。ここまでで、新しい Xcode で 30 分を費やしました。

于 2013-11-01T17:34:38.777 に答える
3

開発者サイトにログインして、Xcode 5.0.2 GM シードをダウンロードしてください。これにより、このバグが修正されました。リリース ノート
を参照してください。

Update 12-Nov-2013 Xcode 5.0.2 がリリースされました。Dev Center
からダウンロードできます。

于 2013-11-06T05:38:50.007 に答える