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:

Greg Clayton 在XCode 5 Crashes while running the app on device建议以下

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 版本相匹配(实际上,我只有一个版本的命令行工具)。

这些问题可能与正在调试的代码无关。它与 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 和类似设备。在 iOS 6 中,iPhone 4 和 iPhone 3GS 设备最有可能遇到这种情况。...这个问题只会发生在 Xcode 5.0.1 上。

所以,这似乎是 Xcode 中的一个错误。

4

3 回答 3

23

好的,这绝对是 Xcode 5.0.1 中的一个错误。

Jason Molenda在 Apple Developer Forum 上证实了这一点。目前唯一的解决方法是使用旧版本的 Xcode和旧版本的 Mac OS X,因为 Xcode 5 需要 OS X 10.8.4。

没有公布的 ETA 来修复此问题。苹果开发者论坛上关于 ETA 的直接问题没有答案。

2013 年 11 月 6 日更新:

今天,在developer.apple.com上提供了 Xcode 5.0.2 的预发布版本。此版本修复(除其他外)以下问题:

在运行 iOS 6.x 的设备上调试应用程序会导致应用程序因 EXC_BAD_ACCESS 而崩溃。这已解决。(15310896)

我已经安装了新版本,问题确实消失了。现在我可以再次在我的 6.x 设备上调试应用程序。

Jason Molenda 在Apple Developer Forum 的帖子中说:

我听说你可以使用这个 Xcode 5.0.2 种子将应用程序提交到应用程序商店。

于 2013-10-31T05:00:51.293 回答
3

我确认我有完全相同的错误。我的应用程序运行良好。升级到 Xcode 5 后,Mavericks 代码工作,但是当我调试时,我无法跳过某些行,因为我得到 EXC_BAD_ACCESS。

所以我必须记住我无法通过 Step Over 的行并在这些行之后放置断点或使用 Continue to Line 跳过这些有问题的行。

附言

下载Xcode 5.0.2 GM seed调试好很多。到目前为止,我用新的 Xcode 花了 30 分钟。

于 2013-11-01T17:34:38.777 回答
3

请登录开发者网站并下载Xcode 5.0.2 GM 种子,它修复了这个错误。
请参阅发行说明

2013 年 11 月 12 日更新
Xcode 5.0.2 已发布,您可以从开发中心下载

于 2013-11-06T05:38:50.007 回答