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

카테고리

Happydong (1363)
프로그래밍 (156)
01.C#기초 (4)
02.C#고급 (13)
03.ASP.NET (28)
04.HTML&Script (17)
05.Silverlight (38)
06.C 언어 기초 (2)
07.iOS (14)
08.Java (5)
09.SQL (8)
10.컴퓨터보안 (10)
11.패턴이야기 (3)
12.유니티3D (1)
13.Ubuntu (7)
14.Node.js (6)
MUSIC (16)
인물 (3)
Utility (10)
세미나 소식&내용 (22)
IT뉴스 (18)
운동 (830)
CAFE (10)
Life (282)
Total
Today
Yesterday




디버딩중에 알수 없는 "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
, |



1. 프로젝트 & 파일

* 새 프로젝트 [shift][command] N
   
새로운 프로젝트를 생성한다.

* 프로젝트 닫기 [control][command] W
   
현재 프로젝트를 종료한다.

* 프로젝트 추가 [option][command] A
   프로젝트에 파일을 추가 한다.

* 새 파일[command] N
   새로운 파일을 작성한다.

* 파일열기 [command] O
   
파일을 오픈한다.

* 파일 저장 [command] S
   현재 파일을 저장한다.

* 모든 파일 저장 [option][command] S
   프로젝트의 모든 변경된 파일을 저장한다.


2. Xcode

* 새 그룹 생성 [option][command]  N
   좌측의 Groups & Fiels에서 새로운 그룹을 생성한다.

* 파일그룹 지정 [option][command] G
   선택된 파일들을 새로운 그룹으로 만든다.

* 파일그룹 지정 [option][command][shift]G
   그룹을 해제한다.

* 에디터 전체 보기 [shift] [command] E
   Group & Files 윈도우를 제외하고 에디터를 전체 보기로 만든다.

* 에디터 전체 보기 [shift] [option] [command] E
   Group & Files 윈도우도 감추고 에디터를 전체 보기로 만든다.

* 클래스 브라우져 [shift] [command] C
   프레임워크 또는 사용자 정의 클래스의 메소드, 소스를 보여 준다.

* target 속성창 [option][command] E
   빌드 및 어플리케이션 옵션을 설정한다.

* 실행 속성창 [option][command] X
   실행파일 패스, 인자, 디버깅 정보를 설정한다.

* 핼프 [shift] [command] /
   Xcode 핼프 윈도우를 연다.

3. 빌드

* 빌드 [command] B
   프로젝트를 빌드 한다.

* 빌드 후 실행 [command] R
   빌드를 완료한 후, 프로그램을 실행한다.

* 빌드 후 디버그 [command] Y
   빌드를 완료한 후, 디버그를 실행한다.

* 빌드 결과 보기 [shift][command] B
   빌드 결과창을 보여준다.

* clean [shift][command] K
   소스 파일의 날짜를 현재 시간으로 변경하여, 다시 컴파일 될 수 있도록 한다.

4. 디버깅

* 다음 경고/오류 [command] =
   소스파일에서 경고나 오류가 발생한 다음 위치로이동한다.

* 이전 경고/오류 [shift][command] =
   소스파일에서 경고나 오류가 발생한 이전 위치로 이동한다.

* 디버거 [shift][command] Y
   디버거 윈도우로 이동한다.

* 디버그 실행 [option][command] Y
   디버그를 시작한다.

* 브레이크포인트 보기 [option][command] B
   브레이크포인트가 설정된 위치를 모두 보여 준다.

* 브레이크포인트 [command] \
   현재 위치에 브레이크포인트를 설정/해제 한다.

* step into [shift][command] I
   한라인씩 실행하며 함수일 경우 내부로 진입한다.

* step over [shift][command] O
   한라인씩 실행하며 함수일 경우 건너 뛴다.

* step out [shift][command] T
   함수를 나가 호출한 위치 다음으로 이동한다.

* 로그창 [shift][command] R
   실행로그창을 보여 둔다.

5. 에디터

* 잘라내기 [command] X
   현재 선택된 영역을 잘라낸다.

* 복사 [command] C
   현재 선택된 영역을 복사낸다.

* 붙여넣기 [command] V
   현재 클립보드에 있는 내용을 붙여 넣는다.

* undo [command] Z
   실행을 취소한다.

* redo [shift] [command] Z
   undo를 취소한다.

* 전체선택 [command] A
   파일 전체를 선택한다.

* 자동완성 보기 [esc]
   자동으로 입력될 내용(함수, 변수)들을 보여 준다.

* 다음 제안 [control] .
   자동완성 목록중에 다음 목록을 보여 준다.

* 이전/다음 파일 [option] [command] 왼쪽 방향키
   여러 파일이 열려있을 경우에 다음 소스 파일을 보여 준다.

* 이전/다음 파일 [option] [command] 오른쪽 방향키
   여러 파일이 열려있을 경우에 이전 소스 파일을 보여 준다.

* 헤더/소스 파일 보기 [option] [command] 위쪽 방향키
   소스파일일 경우에는 헤더 파일을 헤더파일일 경우에는 소스 파일을 보여 준다.

* 우측으로 들여 쓰기 [command] ]
   현재 또는 선택된 영역의 내용을 오른쪽으로 한칸 들여 쓴다.

* 좌측으로 들여 쓰기 [command] [
   현재 또는 선택된 영역의 내용을 왼쪽으로 한칸 들여 쓴다.

* 찾기 [command] F
   현재 에디터에서 문자를 찾거나 대치한다.

* 전체 찾기 [shift][command] F
   모든 프로젝트 또는 열린 파일에서 문자를 찾거나 대치한다.

* 다음 문자 [command] G
   다음 문자를 찾는다.

* 이전 문자 [shift][command] G
   이전 문자를 찾는다.

* 찾기 문자열에 복사 [command] E
   현재 선택된 문자를 찾을 문자열 에디터에 복사한다.

* 대치 문자열에 복사 [command] J
   현재 선택된 문자를 대치할 문자열 에디터에 복사한다.

* 라인 가기 [command] L
   지정한 라인으로 바로 간다.

* 북마크에 추가 [command] D
   현재 라인을 북마크에 추가한다.

* 인터페이스 빌더

1) Window

* 인스펙터 [shift][command] I
   
오브젝트의 속성창을 연다.

* attributes [command] 1
   인스펙터의 attributes 항목을 연다.

* connections [command] 2
   인스펙터의 connections 항목을 연다.

* size [command] 3
   인스펙터의 size 항목을 연다.

* bindings [command] 4
   인스펙터의 bindings 항목을 연다.

* 팔레트 [command] /
   팔레트 윈도우를 보여준다.

* 테스트 [command] R
   윈도우를 실행한다.

* 테스트 종료 [command] Q
   윈도우를 종료하고 인터페이스 빌더로 돌아 온다.

* 정렬 판넬 [shift][command] A
   윈도우 상의 오브젝트들을 정렬할 수 있는 판넬을 연다.

* 레이아웃 사각형 [command] L
   오브젝트들의 레이아웃을 나타내는 사각형을 보여주거나 감춘다.

* 레이아웃 검사 [shift][command] V
   레이아웃 검사창은 보여준다. 오브젝트들의 겹침, 잘림등을 체크해준다.

 

2)  Classes

* subclass [option][command] S
   
Classes 판넬에서 현재 선택된 클래스의 서브클래스를 생성한다.

* Action 추가 [option][command] A
   Classes 판넬에서 현재 선택된 클래스에 Action을 추가한다.

* Outlets 추가 [option][command] O
   Classes 판넬에서 현재 선택된 클래스에 Outlet을 추가한다.

* Outlets 추가 [option][command] F
   Classes 판넬에서 현재 선택된 클래스의 소스파일을 생성한다.

 
[출처] http://www.cocoadev.co.kr/52

Posted by happydong
, |



애플리케이션 델리게이트 메서드들입니다. 

 

application:didFinishLaunchingWithOptions:

에를리케이션 객체의 생성이 끝난 후 가장 먼저 불리는 메소드

applicationDidEnterBackground:
에플리케이션이 활동을 중단하고 백그라운드로 들어갈 때 불리는 메소드다. 중요한 상태 정보는 여기서 저장해야 한다. 사용자나 시스템이 백그라운드 프로세스를 종료해버릴 수도 있다는 점을 명심하라

applicationWillTerminate:
애플리케이션이 백그라운드로 들어간 상태에서 단순히 일시 정지가 아닌 종료할 때 불리는 메소드다.

applicationWillEnterForeground:
애플리케이션이 백그라운드에 있다가 다시 전면으로 나올 때 불리는 메소드다. 이 메소드가 불리는 시점에서는 에플리케이션이 아직 실행을 재개한 상태가 아니다. 백그라운드로 돌면서 바뀐 내용을 화면에 반영하려면 이 메소드에서 처리해줘야 한다.

applicationDidBecomeActive:
애플리케이션이 실행을 재개할 때 불리는 메소드다.

출처 :  맥부기 iPhone OS 개발자 모임 카페 (http://cafe.naver.com/mcbugi?1297657847000)
Posted by happydong
, |