iOS 애플리케이션에서 충돌 문제가 발생했습니다. 그러나 내 장치에서 충돌을 관찰 할 수 없어서 사용자에게 보낸 충돌 로그를 사용하고 있습니다. 여기에 3 유사하게 보이는 symbolicated 충돌 로그의 샘플이다 (I 스레드 0 스택 추적 후 모든 것을 차단, 충돌 로그의 나머지 유용한 정보를하지 않은 것으로 보입니다) :iOS 앱에서 일시적인 SIGABRT 및 SIGSEGV 충돌이 발생했습니다.
충돌 로그 1 :
Date/Time: 2012-11-07 16:40:21 +0000
OS Version: iPhone OS 6.0 (10A403)
Report Version: 104
Exception Type: SIGABRT
Exception Codes: #0 at 0x3c210350
Crashed Thread: 0
Thread 0 Crashed:
0 libsystem_kernel.dylib 0x00011350 __pthread_kill + 8
1 libsystem_c.dylib 0x0006b973 abort + 95
2 libc++abi.dylib 0x00003d4f abort_message + 75
3 libc++abi.dylib 0x00000ff9 default_terminate() + 25
4 libobjc.A.dylib 0x00008a77 _objc_terminate() + 147
5 libc++abi.dylib 0x0000107b safe_handler_caller(void (*)()) + 79
6 libc++abi.dylib 0x00001114 std::terminate() + 20
7 libc++abi.dylib 0x00002599 __cxa_current_exception_type + 1
8 libobjc.A.dylib 0x000089d1 objc_exception_rethrow + 13
9 CoreFoundation 0x00008f21 CFRunLoopRunSpecific + 457
10 CoreFoundation 0x00008d49 CFRunLoopRunInMode + 105
11 GraphicsServices 0x000052eb GSEventRunModal + 75
12 UIKit 0x00057301 UIApplicationMain + 1121
13 TheApp 0x000c7c17 -[StatusEditViewController grabData] (StatusEditViewController.m:75)
충돌 로그 2 :
Date/Time: 2012-10-25 14:46:23 +0000
OS Version: iPhone OS 5.1.1 (9B206)
Report Version: 104
Exception Type: SIGABRT
Exception Codes: #0 at 0x35d1b32c
Crashed Thread: 0
Thread 0 Crashed:
0 libsystem_kernel.dylib 0x35d1b32c __pthread_kill + 8
1 libsystem_c.dylib 0x34efc29f abort + 94
2 libc++abi.dylib 0x35513f6b abort_message + 46
3 libc++abi.dylib 0x3551134d _ZL17default_terminatev + 24
4 libobjc.A.dylib 0x338c9357 _objc_terminate + 146
5 libc++abi.dylib 0x355113c5 _ZL19safe_handler_callerPFvvE + 76
6 libc++abi.dylib 0x35511451 _ZdlPv + 0
7 libc++abi.dylib 0x35512825 __cxa_current_exception_type + 0
8 libobjc.A.dylib 0x338c92a9 objc_exception_rethrow + 12
9 CoreFoundation 0x35bfb50d CFRunLoopRunSpecific + 404
10 CoreFoundation 0x35bfb36d CFRunLoopRunInMode + 104
11 GraphicsServices 0x33996439 GSEventRunModal + 136
12 UIKit 0x333d3cd5 UIApplicationMain + 1080
13 TheApp 0x000c7c17 -[StatusEditViewController grabData] (StatusEditViewController.m:75)
그리고 특히 혼란, 충돌 로그 3 :
Date/Time: 2012-11-12 11:00:21 +0000
OS Version: iPhone OS 5.1.1 (9B206)
Report Version: 104
Exception Type: SIGSEGV
Exception Codes: SEGV_ACCERR at 0x7142fa3c
Crashed Thread: 0
Thread 0 Crashed:
0 libobjc.A.dylib 0x314d8f78 objc_msgSend + 15
1 UIKit 0x31c1d6d7 -[UIPrintPanelViewController dismissPrintPanel:animated:] + 50
2 UIKit 0x31c920dd __73-[UIPopoverController _completionBlockForDismissalWhenNotifyingDelegate:]_block_invoke_0 + 284
3 UIKit 0x318db4db -[UIViewAnimationBlockDelegate _didEndBlockAnimation:finished:context:] + 214
4 UIKit 0x318d5aab -[UIViewAnimationState sendDelegateAnimationDidStop:finished:] + 470
5 UIKit 0x318db3d5 -[UIViewAnimationState animationDidStop:finished:] + 52
6 QuartzCore 0x3552ec2f _ZN2CA5Layer23run_animation_callbacksEPv + 202
7 libdispatch.dylib 0x34838ee7 _dispatch_main_queue_callback_4CF$VARIANT$mp + 194
8 CoreFoundation 0x316662ad __CFRunLoopRun + 1268
9 CoreFoundation 0x315e94a5 CFRunLoopRunSpecific + 300
10 CoreFoundation 0x315e936d CFRunLoopRunInMode + 104
11 GraphicsServices 0x32ac2439 GSEventRunModal + 136
12 UIKit 0x318eecd5 UIApplicationMain + 1080
13 TheApp 0x000c7c17 -[StatusEditViewController grabData] (StatusEditViewController.m:75)
알 수 있듯이, 이러한 충돌 로그는 모두 스레드 0 스택 추적에 14 개의 항목이 있습니다 (일치하지 않는지 확실하지 않음). 하단의 항목은 앱에서 동일한 코드 줄입니다. 이 코드 라인은 꽤 무해하며, 편집 뷰 컨트롤러에 입력 된 데이터가 유효하지 않고 전달되는 문자열이 변수가 아닌 상수 인 경우 UIAlertView를 표시하는 클래스 메소드를 호출합니다.
크래시 로그 3에는 UIPrintPanelViewController에 대한 참조가 있으며 응용 프로그램에 인쇄 기능이 있지만 인쇄 팝업과 상태 편집 팝업을 동시에 열 수는 없으므로 확실하지 않습니다 충돌하는 동안 인쇄판을 닫으려고하는 이유는 무엇입니까?
누구든지이 문제를 어떻게 공격 할 수있는 힌트 나 전략이 있습니까? (I 최신 아이폰 OS SDK에와 엑스 코드 4.5.1 건물입니다.)
편집 :
[Utils msgBox:@"Entry required" message:@"Please enter a value for the Status field before tapping Save."];
그리고이 이후
아마의 대상이 될 것입니다 : 여기에 응용 프로그램 코드의 잘못된 행은 다음 댓글이 여기에 MSGBOX에 대한 Utils.m의 클래스 방법 : 스택 추적이의 Utils 클래스로가는 모든 기록이 표시되지 않는 것처럼+ (void)msgBox:(NSString *)inTitle message:(NSString *)inMessage
{
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:inTitle
message:inMessage
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
[alert release];
}
, 뭔가가 클래스 메소드 전에 무슨 일이 일어나고 있음을 추측하고있다 호출됩니다.
모두 StatusEditViewController.m의 75 번째 행을 의미하는 것 같기 때문에 그 동네에서 무슨 일이 일어나고 있는지 알면 좋을 것입니다. –
나는 코드 라인을 포함하도록 위의 질문을 편집했다. 잘하면 도움이 될 것이다. –
경고보기에 대한 대리인이 없기 때문에 큰 가능성이 배제됩니다. Xcode의 Product-> Analyze 메뉴 옵션은 경고를 표시합니까? –