【问题标题】:How to read logs after iPhone app crashiPhone应用程序崩溃后如何读取日志
【发布时间】:2011-03-01 23:44:32
【问题描述】:

这是我的情况:

我有一个集成了推送的应用程序(我们称之为 MyApp)。当应用程序出现时 从后台返回,我启动了通过推送注册用户的方法。这 应用在开发者模式下测试了很长时间,运行良好。

今天,该应用由 Apple 发布。但是该应用程序不再工作了。它 一直崩溃,但仅在某些情况下: - 在 3G、Edge 或 GPRS 中,应用程序会在开始屏幕后立即崩溃 - 在 WiFi 或飞行模式下,应用程序将按预期工作

我还发现该应用程序在连接到您的 WiFi 时可以运行 无权访问(只要出现 WiFi 标志,应用程序就不会崩溃 不再,即使你不能用你所在的局域网浏览互联网 已连接!)。

希望你能帮我解决错误信息,我不太明白 如何摆脱应用程序崩溃。如前所述,在开发人员(在模拟器 在我的 iPhone 上)它会正常工作!

非常感谢您的提示!

建议

  • 可达性文件中的某个地方出现问题
  • 启动“registerForRemoteNotificationTypes”后出现问题

日志文件

Incident Identifier: CD5D1DFA-75E7-4042-B8C6-4DA8F2477852
CrashReporter Key:   639f660a06c84202b5bc3666882fda8532a610b3
Hardware Model:      iPhone3,1
Process:         myApp [1296]
Path:            /var/mobile/Applications/06B7C009-BB46-4473-9221-C8924C3D7A81/myApp.app/myApp
Identifier:      myApp
Version:         ??? (???)
Code Type:       ARM (Native)
Parent Process:  launchd [1]

Date/Time:       2011-03-01 08:32:00.598 +0100
OS Version:      iPhone OS 4.2.1 (8C148)
Report Version:  104

Exception Type:  EXC_BAD_ACCESS (SIGBUS)
Exception Codes: KERN_PROTECTION_FAILURE at 0x00050000
Crashed Thread:  0

Thread 0 Crashed:
0   libSystem.B.dylib               0x33b5fa3c strlen + 12
1   CoreFoundation                  0x33a3e42e __CFStringAppendFormatCore + 2386
2   CoreFoundation                  0x33a3daac _CFStringCreateWithFormatAndArgumentsAux + 64
3   CoreFoundation                  0x33a5a924 _CFLogvEx + 64
4   Foundation                      0x33625738 NSLogv + 56
5   Foundation                      0x336256ec NSLog + 16
6   myApp                           0x0000e42c PrintReachabilityFlags (Reachability.m:25)
7   myApp                           0x0000e446 -[Reachability networkStatusForFlags:] (Reachability.m:147)
8   myApp                           0x0000e518 -[Reachability currentReachabilityStatus] (Reachability.m:198)
9   myApp                           0x000030f4 -[myAppAppDelegate configureTextField:imageView:reachability:] (myAppAppDelegate.m:278)
10  myApp                           0x00003354 -[myAppAppDelegate updateInterfaceWithReachability:] (myAppAppDelegate.m:274)
11  myApp                           0x00003bca -[myAppAppDelegate applicationDidFinishLaunching:] (myAppAppDelegate.m:25)
12  UIKit                           0x3209ebfa -[UIApplication _callInitializationDelegatesForURL:payload:suspended:] + 826
13  UIKit                           0x3209a252 -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 266
14  UIKit                           0x32066484 -[UIApplication handleEvent:withNewEvent:] + 1108
15  UIKit                           0x32065ec2 -[UIApplication sendEvent:] + 38
16  UIKit                           0x32065900 _UIApplicationHandleEvent + 5084
17  GraphicsServices                0x33b0eefc PurpleEventCallback + 660
18  CoreFoundation                  0x33a556f8 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 20
19  CoreFoundation                  0x33a556bc __CFRunLoopDoSource1 + 160
20  CoreFoundation                  0x33a47f76 __CFRunLoopRun + 514
21  CoreFoundation                  0x33a47c80 CFRunLoopRunSpecific + 224
22  CoreFoundation                  0x33a47b88 CFRunLoopRunInMode + 52
23  UIKit                           0x32099302 -[UIApplication _run] + 374
24  UIKit                           0x32096e8c UIApplicationMain + 664
25  myApp                           0x00003082 main (main.m:13)
26  myApp                           0x00003018 start + 44

Thread 1:
0   libSystem.B.dylib               0x33b89974 kevent + 24
1   libSystem.B.dylib               0x33c33704 _dispatch_mgr_invoke + 88
2   libSystem.B.dylib               0x33c33174 _dispatch_queue_invoke + 96
3   libSystem.B.dylib               0x33c32b98 _dispatch_worker_thread2 + 120
4   libSystem.B.dylib               0x33bd724a _pthread_wqthread + 258
5   libSystem.B.dylib               0x33bcf970 start_wqthread + 0

Thread 2:
0   libSystem.B.dylib               0x33bd79e0 __workq_kernreturn + 8
1   libSystem.B.dylib               0x33bd7364 _pthread_wqthread + 540
2   libSystem.B.dylib               0x33bcf970 start_wqthread + 0

Thread 3:
0   libSystem.B.dylib               0x33b5d268 mach_msg_trap + 20
1   libSystem.B.dylib               0x33b5f354 mach_msg + 44
2   CoreFoundation                  0x33a48648 __CFRunLoopServiceMachPort + 88
3   CoreFoundation                  0x33a47ed2 __CFRunLoopRun + 350
4   CoreFoundation                  0x33a47c80 CFRunLoopRunSpecific + 224
5   CoreFoundation                  0x33a47b88 CFRunLoopRunInMode + 52
6   WebCore                         0x304df124 RunWebThread(void*) + 332
7   libSystem.B.dylib               0x33bd6886 _pthread_start + 242
8   libSystem.B.dylib               0x33bcba88 thread_start + 0

Thread 0 crashed with ARM Thread State:
    r0: 0x00050000    r1: 0x00000024      r2: 0x00000027      r3: 0x00000003
    r4: 0x00000000    r5: 0x00050003      r6: 0x00000001      r7: 0x2fdfe348
    r8: 0x2fdfd64c    r9: 0x00000002     r10: 0x00000000     r11: 0x00000000
    ip: 0x00050003    sp: 0x2fdfd43c      lr: 0x33a3e435      pc: 0x33b5fa3c
  cpsr: 0x200f0010

Binary Images:
[...]

【问题讨论】:

    标签: iphone objective-c logging exc-bad-access apple-push-notifications


    【解决方案1】:

    我发现问题出在 Reachability 类中。显然是在这里:

    PrintReachabilityFlags(flags, "networkStatusForFlags");
    

    所以问题出在"networkStatusForFlags" 字符串上。它在长度计算期间崩溃可能是因为最后有一些垃圾而不是 '\0' 字符并且访问了一些额外的内存。尝试像这样更改它:

    PrintReachabilityFlags(flags, "networkStatusForFlags\0");
    

    【讨论】:

    • 感谢您的意见,我也认为它一定在某个地方。我的假设是否正确,即日志记录 (NSLog) 使应用程序崩溃?如果是的话,我认为这有点荒谬。在 Reachability.m 的第 25 行,我发现“NSLog(@"Reachability Flag Status: %c%c %c%c%c%c%c%c%c %s\n",..."。奇怪的事情是自上次更新(12 月完成)以来,我没有更改 Reachability 中的任何内容。当时,该应用程序按预期运行!
    • 错误出在日志记录部分,所以我将其完全从应用程序中注释掉。应用程序崩溃仍然很奇怪,因为代码是由 Apple 提供的(可达性示例)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多