【发布时间】:2012-10-12 03:03:01
【问题描述】:
我有一个非常奇怪的 EXEC_BAD_ACCESS 错误,错误发生在应用程序启动时。 没有断点或 NSLog 到达它取消时 UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])) 被调用。
它只会在模拟器上崩溃,而不是在设备上或仪器上。 僵尸没有给我任何信息,当我在模拟器上启用 GUARDMALLOC 时它不会崩溃。 EXEC_BAD_ACCESS 总是发生在同一个内存地址上。
我可以得到以下回溯
#0 0xcd58a2f6 in ?? ()
#1 0x0102b524 in -[UIWindow _commonInit] ()
#2 0x0102b66f in -[UIWindow initWithFrame:] ()
#3 0x0137be58 in -[UIStatusBarWindow initWithFrame:] ()
#4 0x0103c28f in -[UIView init] ()
#5 0x01000a5e in -[UIApplication _createStatusBarWithRequestedStyle:orientation:hidden:] ()
#6 0x00ffbe6b in -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] ()
#7 0x0100d315 in -[UIApplication handleEvent:withNewEvent:] ()
#8 0x0100e24b in -[UIApplication sendEvent:] ()
#9 0x00fffcf8 in _UIApplicationHandleEvent ()
#10 0x02fe7df9 in _PurpleEventCallback ()
#11 0x02fe7ad0 in PurpleEventCallback ()
#12 0x022cabf5 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ ()
#13 0x022ca962 in __CFRunLoopDoSource1 ()
#14 0x022fbbb6 in __CFRunLoopRun ()
#15 0x022faf44 in CFRunLoopRunSpecific ()
#16 0x022fae1b in CFRunLoopRunInMode ()
#17 0x00ffb7da in -[UIApplication _run] ()
#18 0x00ffd65c in UIApplicationMain ()
#19 0x00002ea2 in main (argc=1, argv=0xbffff2a0) at /Users/user/Projects/App/App/main.m:16
当我尝试获取有关我获得的内存的信息时
Cannot access memory at address 0xcd58a2f6
我有时可以在更改一些代码时解决它,但是当我只在其他一些函数中创建局部变量时又会发生这种情况,所以我认为问题更深一些。
我有点困惑,因为当错误发生时,didFinishLaunchingWithOptions 永远不会到达,那么什么样的影响会对我的视图控制器中的代码产生影响?
作为第 3 方组件,我使用 Phonegap 2.1 作为组件和 Apple 的 Reachability。
【问题讨论】:
-
当应用过早失败时,通常是因为正在加载的初始 xib 或故事板内部存在问题。
-
没有情节提要和XIB,一切都是在完成启动后以编程方式完成的。奇怪的是,在我从项目中删除了一些未使用的 XIB(用于单元格)之后,它似乎又可以工作了。
-
启用僵尸对象并重试。
标签: ios xcode debugging memory-leaks