我尝试跳过调用时,我的应用程序都会崩溃。没有调试器,它可以正常工作。
此外,当我在模拟器中运行应用程序时,无论有没有调试器,它都可以正常工作。
最近,我将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中 在设备上运行应用程序时崩溃 建议以下
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,但iPad与iOS 7.0.2工作正常,则例外仍然存在。
因此,看起来问题与设备上安装的iOS版本有关。我仍然不确定该怎么做才能解决它。
编辑3:
我的命令行工具版本与我的 Xcode 版本匹配(实际上我只有一个版本的命令行工具)。
这些问题可能与正在调试的代码无关。它与Xcode创建的新创建的单视图应用程序一起崩溃。当单步执行琐碎的代码时,它会崩溃:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
我在苹果开发者论坛上问过这个问题,并得到了Jason Molenda的以下回应:
我们正在跟踪一个听起来像您在此处看到的错误。 是的 需要稍慢的主机的细微计时问题,或 一个稍微慢一点的设备。 它主要是iPhone 4和类似产品 这将在iOS 7中看到这一点。 适用于 iOS 6、iPhone 4 和 iPhone 3GS 设备最有可能体验到它。... 此问题只会 发生在 Xcode 5.0.1 中。
所以,这似乎是Xcode中的一个错误。
好的,这绝对是 Xcode 5.0.1 中的一个错误。
Jason Molenda在苹果开发者论坛上证实了这一点。目前唯一的解决方法是使用旧版本的 Xcode 和旧版本的 Mac OS X,因为 Xcode 5 需要 OS X 10.8.4。
没有宣布的 ETA 来修复此问题。苹果开发者论坛上关于ETA的直接问题没有答案。
更新 06-十一月-2013:
今天,Xcode 5.0.2 的预发布版本在 developer.apple.com 上可用。此版本修复了以下问题(除其他事项外):
在运行 iOS 6.x 的设备上调试应用程序会导致 应用程序与EXC_BAD_ACCESS一起崩溃。 此问题已解决。 (15310896)
我已经安装了新版本,问题确实消失了。现在,我可以再次在6.x设备上调试应用程序。
Jason Molenda在苹果开发者论坛上说:
我被告知您可以使用此Xcode 5.0.2向应用商店提交应用程序 种子。
我确认我有完全相同的错误。我的应用程序工作正常。升级到 Xcode 5 后,Mavericks 代码可以工作,但是当我调试时,我无法在EXC_BAD_ACCESS时跨过某些行。
因此,我必须记住我无法通过的行,并在这些行之后放置断点,或者使用"继续行"跳过这些有问题的行。
附言
下载Xcode 5.0.2 GM seed
和调试要好得多。到目前为止,我花了 30 分钟使用新的 Xcode。
请登录开发者网站并下载 Xcode 5.0.2 GM 种子,它修复了这个错误.
请参阅发行说明。
更新 12-Nov-2013<</strong>br/>Xcode 5.0.2 已发布,可以从开发人员中心下载