2012-09-24 2 views
7

나는 criticcism에서 오는 몇 가지 sigsegv 크래시가 있지만 디버깅을 시작하는 방법을 잘 모르겠습니다. 내 코드의 유일한 줄은 충돌 한 쓰래드의 시작으로부터의 주요 호출이다.iphone에서 crittercism의 sigsegv 크래시

crittercism에서 충돌 스레드의 스택 트레이스를 복사 :

이유 :

24 9 월 12 오후 2시 38분 14초의 SIGSEGV 주 (main.m : 11)

스택 :

 
0 
0 libobjc.A.dylib 0x356265b0 objc_msgSend + 15 
1 
1 UIKit 0x3861c313 + 1310 
2 
2 UIKit 0x386337cf + 206 
3 
3 UIKit 0x385ef80b + 258 
4 
4 QuartzCore 0x34f56d63 + 214 
5 
5 QuartzCore 0x34f56901 + 460 
6 
6 QuartzCore 0x34f57835 + 16 
7 
7 QuartzCore 0x34f5721b + 238 
8 
8 QuartzCore 0x34f57029 + 316 
9 
9 UIKit 0x386786e5 + 572 
10 
10 UIKit 0x386784a3 + 66 
11 
11 UIKit 0x38677391 + 1464 
12 
12 UIKit 0x385ed1ef + 2458 
13 
13 UIKit 0x385ec6d5 + 72 
14 
14 UIKit 0x385ec123 + 6154 
15 
15 GraphicsServices 0x3779f5a3 + 590 
16 
16 CoreFoundation 0x372f0683 + 14 
17 
17 CoreFoundation 0x372efee9 + 212 
18 
18 CoreFoundation 0x372eecb7 + 646 
19 
19 CoreFoundation 0x37261ebd CFRunLoopRunSpecific + 356 
20 
20 CoreFoundation 0x37261d49 CFRunLoopRunInMode + 104 
21 
21 GraphicsServices 0x3779e2eb GSEventRunModal + 74 
22 
22 UIKit 0x38640301 UIApplicationMain + 1120 
23 
23 MyApp 0x35bf main (main.m:11) 
+0

또한 나는 다른 많은 이상한 충돌이 있습니다. 메모리 부족 경고 후 시스템이 응용 프로그램을 닫을 수 있습니까? – Murlakatam

답변

0

먼저 충돌 로그를 "기호화"해야합니다. 거기에 많은 웹 페이지가 있습니다.

이 스택은 objc_msgSend에서 끝나기 때문에 가장 가능한 원인은 매달려있는 포인터입니다.

디버깅하려면 NSZombies를 사용하는 것이 좋습니다. 시뮬레이터에서 테스트 중이면 "Guard malloc"을 시도해보십시오.

0

이 충돌은 이미 할당이 해제 된 개체에 대한 포인터에서 메서드를 호출 할 때 발생합니다. 그것은 당신의 코드 어딘가에 UIKit 요소를 가지고있는 매우 일반적인 참조 카운트 오류입니다. 그러나 연습 문제에서해야 할 일은 .DSYM 파일을 비판적으로 업로드하는 것입니다. 자동 빌드 프로세스의 일부로 웹 사이트 또는 Web API call을 통해 수동으로 수행 할 수 있습니다.