블로그 이미지
내게 능력 주시는 자 안에서 내가 모든것을 할수 있느니라 - 빌립보서 4 : 13 - happydong

카테고리

Happydong (1363)
프로그래밍 (156)
MUSIC (16)
인물 (3)
Utility (10)
세미나 소식&내용 (22)
IT뉴스 (18)
운동 (830)
CAFE (10)
Life (282)
Total
Today
Yesterday

'EXC_BAD_ACCESS'에 해당되는 글 1건

  1. 2011.03.02 EXC_BAD_ACCESS 등 알 수 없는 튕김현상 디버깅 방법




디버딩중에 알수 없는 "EXC_BAD_ACCESS" 에러가 떠서 구글 검색해서 알아 낸 방법이다. 유용한 정보 이여서 내용을 복사해와서 적어 놓았다.(내가 알아 보기 위해서^^)
원본 출처는 마지막 줄에 적어 놓았다. 




아이폰 개발을 하다보면, 디버깅 상태에서도 그냥 띡하니 EXC_BAD_ACCESS 한 마디만 툭 내뱉고 어플리케이션이 종료되어 버리거나 하는 경우를 종종 볼 수 있다.

윈도우에서 어플리케이션을 개발해왔던터라 윈도우에서 개발할때는 보통 개발툴이 이미 해제된 메모리 주소를 가진 포인터에 접근하거나 기타 오류 상황에서 상당부분 오류가 난 소스의 위치를 찝어주는데, Xcode에서는 떡하니 뭔가 나 죽어요...라고만하고 핑 종료되어버려서 당황스러웠다.
디버거 콘솔에 딱히 뭔가 참고할만한 정보도 별로 없이 죽는경우도 많다.

이런 경우 디버거 콘솔에 조금 더 자세한 정보를 출력하도록 할 수 있는데, 아래처럼 설정해주면 된다.

Group & Files 의 Excutables에서 선택을 해주고, 메인툴바에 Info 버튼을 클릭한다.


Arguments 페이지에 "Variables to be set in the environment" 부분에 아래 이미지처럼 NSZombieEnabled와  NSDebugEnabled를 추가하고 모두 값을  YES로 적어준다. 이렇게 해놓고 어플리케이션을 실행하면, 디버거 콘솔에 좀 더 자세한 정보가 출력된다.

아래는 NSZombieEnabled, NSDebugEnabled 가 없을 때 오류가 난 상황에서 디버거 콘솔 화면이다.

아래는 NSZombieEnabled, NSDebugEnabled를 추가한 후 위와 동일한 오류가 발생한 상황에서의 디버거 콘솔 화면이다.
오류는 NSData 객체가 메모리 해제된 후 다시 release가 되어서 발생한 오류이다. [NSConcreteData release]: message sent to deallocated instance 라고 NSData와 관련된 부분에서 release 메시지가 잘못 보내져서 오류가 나고 있음을 확인할 수 있다.


출처 : http://blog.xiles.net/360

참고 주소 :
http://coderslike.us/2009/05/05/finding-freeddeallocated-instances-of-objects/ 
http://www.cocoadev.co.kr/73 
Posted by happydong
, |