XCode에서 디버깅 모드로 테스트 중인 앱이 뭔가의 오류로 죽었다. 그런데 죽은 곳을 알 수가 없을 때가 있다. 디버거의 트레이스는 main을 가리키고 있는 경우가 많다. 이 경우 로그창의 메시지를 이용해 간접적으로 원인을 알 수도 있지만 실제 원인은 알 수 없는 경우도 많다.
이런 경우 중 다수가 아마도 NSException 로 정의된 예외가 발생했을 경우다. 예를 들어 NSArray에서 크기를 벗어나는 index를 참조했을 경우 등등 다양한 Exception이 발생할 수 있다.
예외가 발생하는 위치를 파악하기 위해 도움을 주는 방법 중 하나가 브레이크 포인트를 거는 것이다. 그냥 일반적으로 사용하는 것이 아닌 예외 브레이크 포인트 (Exception Breakpoint) 이다. 이걸 걸어두면 예외사항이 발생하는 곳에서 트레이스가 잡힌다.
Exception Breakpoint를 거는 방법은 간단하다. Breakpoint Navigator(단축키 Command-6)화면을 띄워보자.
좌측 하단에 보면 + 버튼이 보인다. 이 버튼을 눌러보자.
단번에 알 수 있다. Add Exception Breakpoint를 선택하자.
몇 가지 옵션이 있으니 필요한 대로 골라보고 Done 버튼을 누르면 예외 브레이크포인트가 걸린다.
이제 남은 일은 문제를 일으켜서(-_-) 원인을 파악하는 것이다. 다만 이렇게 한다 해도 단번에 원인을 파악하기 쉽다는 건 아니지만 조금은 더 도움이 된다.
PS. 이런 예외 처리는 코드로 제대로 처리해 두는게 당연히 우선일 것이다. Objective-C에서도 Exception Handling이 가능하다.
Popular Posts
-
이번 글은 굉장히 유명한 수학 함수 3가지를 적어보는 글입니다. 그리고 오랜만에 구어체가 아닌 존대말(?)로 쓰는 글이기도 하겠네요. 이번에 언급하는 함수 세 가지, 즉 ceil(), floor(), round() 함수는 C 언어 시절부터 쓰이...
-
내 나이대도 이제는 젊다고 하기에는 힘든(?) 수준으로 치닫고 있다. 세월의 흐름이 너무 빨라서 아쉽고 벅차고 숨차기는 하지만, 이럴 때 일 수록 추억을 떠올려 보면 나름 재미있는 세월을 보냈구나 생각이 든다. 이참에 옛날 옛적에 쓰던 구식 컴퓨터...
-
Vim이 강력한 편집기로써 군림하게 된 건 편한 키맵, 정규표현식, 그리고 이 매크로 레코딩 기능이 있기 때문이라고 감히 주장하고 싶다. 레코딩 기능은 사용자가 입력하는 키를 그대로 녹화해서 매크로로 만들어 주는 기능이다. 이 기능에 대해 간단히...
-
Mac OS X에 기본적으로 포함되어 있는 한글 입력기는 제법 불만이 많다. 개인적으로 꼽는 가장 큰 불만은 입력 모드 전환이 너무 느리다 라는 점이다. 한글모드로 바꿀 때 마다 바람개비가 뺑뺑 돌아가는데 속 터진다. 개선이 언제될지는 모른다. 그...
-
간단한 문자열 파싱을 할 때는 대체로 정규표현식(re) 모듈을 많이 활용한다. 하지만 단순한 패턴을 읽어 낼 때는 정규표현식은 귀찮은게 많다. 이럴때는 간단하게 파싱 할 수 있게 도와주는 parse 모듈을 사용 할 수도 있다. 이 모듈의 설명은 아래 ...
-
Q. 1.3과 1.12 중 어느 버전이 더 최신 버전인가요? A. 1.12가 더 최신버전입니다. 위의 같은 질문류를 커뮤니티에서 본 적이 있는데 놀랍게도 1.3을 1.12보다 더 높은 버전으로 생각하는 사람이 많은 것 같았다. 그래서 이번에는 버...
-
파이썬에선 기본적으로 C 스타일의 문자열 포맷 방법을 제공한다. printf나 sprintf 처럼 % 문자를 사용해서 문자열을 대체하는 것 말이다. 우연찮은 기회에 이 방법이 아닌 다른 방법으로 문자열을 포매팅 하는 방법(str.format)을 알게 ...
-
SBJson 은 Objective-C로 만들어진 Cocoa용 JSON Framework 이다. Mac OS X 용 혹은 iOS 용으로 사용할 수 있다.
-
제목 만으로도 알 수 있겠지만, 그냥 웹 상의 파일을 다운로드 받을 수 있는 모듈이다. 물론 이 모듈 없이도 urllib과 httplib 등으로 받을 순 있지만 귀찮다. -_-;;;



0 comments:
댓글 쓰기