문제

나는 iPhone 앱에 꽤 이상한 문제가 있습니다. 즉, 메모리가 손상되는 것과 관련이 있다고 생각합니다.

어느 시점에서 나는 배열을 정렬해야합니다. -[sortArrayUsingFunction].

결과는 내가 같은 것으로 메모리를 할당하지 않는 한 정확하지 않습니다. void *test = malloc(2 * sizeof( int )) 메소드 호출 전에 또는 예를 들어 NSLog() 정렬 함수에서 (절대 호출되지 않음).

다시 말해, 정렬은 분류 함수를 호출하기 전에 사용 된 메모리를 약간 증가시키는 경우에만 작동합니다. 나는 이것이 어느 시점에서 기억이 손상되기 때문이라고 생각합니다.

이런 식으로 어떻게 디버그합니까?

도움이 되었습니까?

해결책

코드 중 일부가 이미 릴리스 된 객체를 사용하는 것처럼 들립니다. 이런 종류의 오류를 디버깅하는 데 도움이되는 많은 도움이 Apple 's Great에서 제공됩니다. Mac OS X 디버깅 매직 기술 노트, 특히 기초 부분.

귀하의 경우 AutorELEASE 풀을 비활성화합니다 (환경 변수 설정 NSEnableAutoreleasePool=NO) 또는 좀비 기능을 사용합니다 (NSZombieEnabled=YES) 출시 된 개체에 메시지를 보내는 장소를 찾으려면.

다른 팁

Valgrind의 시뮬레이터에서 프로그램을 실행해보십시오.

http://valgrind.org/

시뮬레이터에서 사용하는 방법 :

http://landonf.bikemonkey.org/code/iphone/iphone_simulator_valgrind.20081224.html

설치된 위치에 따라 코드 예제에서 Valgrind 경로를 변경해야 할 수도 있습니다.

그러한 것들은 디버깅하기가 어려울 수 있습니다. 바운드 외 액세스를 감지하기위한 몇 가지 도구 등이 있으므로 다른 플랫폼에서 그러한 도구가 있으므로 iPhone을위한 무언가가있을 것이라고 생각하지만 아무것도 모릅니다.

아마도 배열의 두 부를 저장하고 차이점을 비교해야 할 것입니다. 차이점을 인쇄하십시오. 배열 중 하나에 소개 된 "정크"의 특성은 어디에서 왔는지에 대한 힌트를 줄 수 있습니다.

또한이 시점 이전에 실행되는 코드를 살펴보고 다시 읽으십시오 (또는 더 나은 사람이 읽도록하십시오). 버그를 발견 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top