2011-11-11 4 views
1

내 응용 프로그램 indefined 이유로 충돌 나는이 로그와 끝까지 :iOS에서 충돌을 디버깅하는 방법은 무엇입니까?

의 Myproj [9442 : 707] - [NSDecimalNumber 길이] : 인식 할 수없는 선택 예를 0x2e6690

내가 어떤 자세한 내용이 가질 수있는 전송? 9442 : 707은 무엇을 의미합니까, 라인 번호입니까? 내 코드에서

편집

, 나는 같은 흔적을 추가 한 :

NSLog(@"KEYS:%@", myKeys); 
NSLog(@"KEYS ORDERED:%@", [myKeys sortedArrayUsingSelector:@selector(compare:)]); 

그러나 두 번째 줄은 충돌합니다. 내가 가지고있는 "길이"오류는이 줄에서 오는 것으로 보인다. (나는 어디에도 길이를 사용하지 않는다.)

2011-11-11 14:20:18.936 MyProj[9570:707] KEYS:(
    330, 
    359, 
    362, 
    367, 
    352, 
    351, 
    364, 
    331, 
    350 
) 

... then crash... with above error 
+0

다음을 확인하십시오. iOS에서 충돌을 추적하고 디버그하는 방법 http://ios-blog.co.uk/tutorials/how-to-trace-and-debug-an-ios-crash-part -1/ – MarkP

답변

2

iOS 디버거는 때때로 정확한 문제를 설명하는 데 다소 불명확합니다. 그러나 귀하의 경우에는 분명해야합니다. [NSDecimalNumber length] 메서드 길이가 명확하지 않아 실행할 수 없습니다.

참조 : http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSDecimalNumber_Class/Reference/Reference.html

당신이 길이 기능을 사용하여 작업을 수행 무언가로 변경 라인을 찾아보십시오. 귀하의 질문에 우리가 더 정확한 수있는 코드 조각으로.

+0

코드에서 "길이"를 사용하지 않고 배열을 정렬하는 동안 링크 된 것으로 보입니다 (질문에 코드의 일부를 추가했습니다). – Luc

+0

@Luc : 비교 : 방법. 길이 함수로 커버 밑에서 뭔가를 할 것입니다. 그것은 그것일지도 모른다. –

+0

You'r right, 길이가 compare 메소드에서 호출됩니다. 방금 비교 한 객체가 모두 NSString이 아니며 NSDecimalNumber가 숨겨져있는 것을 보았습니다 ... NSString으로 변경 했으므로 잘 작동합니다. 당신의 도움을 주셔서 감사합니다. – Luc

2

9442 : 707은 프로세스에 대한 정보입니다. 여기서는 도움이되지 않습니다.

코드에서 NSDecimalNumber에 길이 메시지를 보내고 있습니다.

디버거에서 충돌이 발생할 수 있습니까? 그렇다면 충돌이 발생했을 때 호출 스택을 확인하십시오. 그러면 문제가 발생했음을 알려야합니다.

코드베이스가 너무 크지 않은 경우 코드에서 "길이"를 검색하여 길이 메시지를 보내어 잘못된 유형의 객체로 보낼 수 있는지 검사 할 수 있습니다.

+0

나는 오류를 격리 할 수 ​​있었지만 명백한 [무언가 길이의] 호출 때문에 보이지는 않는다. 질문을 업데이트하고 추가 로그를 추가했습니다. – Luc

관련 문제