如何从iPhone读取崩溃报告

时间:2009-09-04 19:28:12

标签: iphone cocoa-touch stack-trace

来自测试版测试人员的崩溃报告,我无法确定问题的根源。显然,在尝试设置UIButton(screenOverlay)时出现了问题。这是它在ViewDidLoad中的创建:

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
button.backgroundColor = [UIColor blackColor];
button.alpha = 0.0;
button.hidden = YES;
[button addTarget:self.noteView action:@selector(backgroundClicked:) forControlEvents:UIControlEventTouchUpInside];
self.screenOverlay = button;
[self.view addSubview:screenOverlay];
[button release];

奇怪的是,这个崩溃发生在视图加载后很好...也许当键盘被移动到屏幕外时,再次调用viewDidLoad?无论如何,那里的任何退伍军人都有一些关于如何处理这些事情的智慧的话语?

这是堆栈跟踪。如果你觉得有价值的话,很乐意上传休息。

    Date/Time:       2009-09-04 08:42:05.341 -0700
    OS Version:      iPhone OS 3.0.1 (7A400)
    Report Version:  104

    Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
    Exception Codes: KERN_INVALID_ADDRESS at 0x80000408
    Crashed Thread:  0

    Thread 0 Crashed:
    0   libobjc.A.dylib  0x30011960 objc_msgSend + 52
    1   libobjc.A.dylib  0x3001313c objc_setProperty + 160
    2   MyApp            0x00003258 -[ItemizeViewController setScreenOverlay:] (ItemizeViewController.m:24)
    3   MyApp            0x00003920 -[ItemizeViewController viewDidLoad] (ItemizeViewController.m:229)
    4   UIKit            0x3093d5e4 -[UIViewController view] + 152
    5   UIKit            0x30a56d84 -[UIViewController contentScrollView] + 24
    6   UIKit            0x30973ee0 -[UINavigationController _startTransition:fromViewController:toViewController:] + 180
    7   UIKit            0x30973d90 -[UINavigationController _startDeferredTransitionIfNeeded] + 256
    8   UIKit            0x309a7468 -[UINavigationController _popViewControllerWithTransition:allowPoppingLast:] + 400
    9   UIKit            0x309a72c8 -[UINavigationController popViewControllerAnimated:] + 32
    10  UIKit            0x309a7a0c -[UINavigationController navigationBar:shouldPopItem:] + 132
    11  UIKit            0x309a77e8 -[UINavigationBar popNavigationItemAnimated:] + 184
    12  UIKit            0x30a3667c -[UINavigationBar _handleMouseUpAtPoint:] + 536
    13  UIKit            0x30a34f64 -[UINavigationBar touchesEnded:withEvent:] + 84
    14  UIKit            0x309a60d4 -[UIWindow _sendTouchesForEvent:] + 520
    15  UIKit            0x309a5464 -[UIWindow sendEvent:] + 108
    16  UIKit            0x30936e3c -[UIApplication sendEvent:] + 400
    17  UIKit            0x30936874 _UIApplicationHandleEvent + 4336
    18  GraphicsServices 0x32046964 PurpleEventCallback + 1028
    19  CoreFoundation   0x30254a70 CFRunLoopRunSpecific + 2296
    20  CoreFoundation   0x30254164 CFRunLoopRunInMode + 44
    21  GraphicsServices 0x3204529c GSEventRunModal + 188
    22  UIKit            0x308f0374 -[UIApplication _run] + 552
    23  UIKit            0x308eea8c UIApplicationMain + 960
    24  MyApp            0x00002090 main (main.m:14)
    25  MyApp            0x0000202c start + 44

Thread 1:
0   libSystem.B.dylib               0x31d47158 mach_msg_trap + 20
1   libSystem.B.dylib               0x31d49ed8 mach_msg + 60
2   CoreFoundation                  0x3025454e CFRunLoopRunSpecific + 982
3   CoreFoundation                  0x30254164 CFRunLoopRunInMode + 44
4   WebCore                         0x3588dbc8 RunWebThread(void*) + 412
5   libSystem.B.dylib               0x31d705a0 _pthread_body + 20

Thread 0 crashed with ARM Thread State:
    r0: 0x0018e4e0    r1: 0x300991c4      r2: 0x43a00000      r3: 0x00001108
    r4: 0x80000408    r5: 0x00000001      r6: 0x00000000      r7: 0x2fffeb94
    r8: 0x43a00000    r9: 0x001fc098     r10: 0x301038dc     r11: 0x30082134
    ip: 0x381fd03c    sp: 0x2fffeb74      lr: 0x30013144      pc: 0x30011960
  cpsr: 0xa0000010

1 个答案:

答案 0 :(得分:4)

从上面的代码中,我看到以下

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];

然后你正在调用[按钮释放],现在这可能会导致你的问题,你调用的clas方法不保留对象,因为它是自动释放的,所以你在对象上调用release,稍后当它尝试时自动发布它你得到了崩溃...非常确定你的问题...删除[buttom发布]你应该没问题,这基本上是一个过度发布的问题