본문 바로가기
iOS 개발/WWDC

[iOS] Xcode13에서 디버깅하기

by soobaaaam 2021. 10. 9.
728x90

본 글은 애플이 WWDC21에서 발표한 'Discover breakpoint improvements' 영상을 참고/번역하여 만들었습니다.

 


프로그램을 만들 때 문제가 생기면 디버깅을 통해 문제를 찾아내고 해결한다. 

Xcode13에서 새롭게 등장한 디버깅 기능들이 몇 가지 있는데, 이를 살펴보자.

 

1. Source file breakpoints

 단일 파일에서 실행되는 breakpoint이며, 가장 보편적인 형태는 line breakpoint이다.

 

 line breakpoint를 원하는 코드에 걸면 다음과 같이 행 번호에 파란색으로 표시된다.

 그러나 line breakpoint의 경우, 내가 원하는 함수를 확인하고 싶어도 먼저 실행되어야 하는 코드가 있다면 내가 원하는 함수가 실행되기까지 많은 시간이 걸릴 수 있다. Debug메뉴에서 Step Into와 Step Out을 일일이 반복해줘야 하기 때문이다.

 

새로운 기능 - Column breakpoints

 따라서 이를 해결하기 위해 xCode13부터 Column breakpoints를 제공한다.

 

위 사진처럼 원하는 함수를 클릭 후 column breakpoint를 걸 수있다.

 

 뿐만 아니라 기존의 line breakpoint처럼 한 번 클릭으로 사라지게 할 수 있고, 더블 클릭으로 내용을 수정할 수도 있다.

 

 다만 line breakpoint는 빈 공간에 드래그해서 없앨 수 있지만, column breakpoint는 command클릭으로 삭제해야 한다.

 

 고차 함수에서 $0 같은 인자들에게도 column breakpoint를 걸어 특정 값을 확인할 수 있다.

 

 

2. Symbolic breakpoints

 

 함수가 실행될 때 함수의 이름에도 breakpoint를 걸 수 있는데, 이를 Symbolic breakpoints라 부른다.

 왼쪽 하단의 + 버튼을 눌러 Symbolic Breakpoint를 만들 수 있다.

 

 창이 생기면 원하는 함수의 이름을 입력한다.

 

 그러나 같은 단어를 포함하고 있는 함수들이 많기 때문에 문제가 생길 수 있다.

 

 하지만 이를 해결하기 위해 Module에 해당 앱의 binary name을 검색하면 일부 항목들을 필터링할 수 있다.

 

 만약 symbolic breakpoint를 만들었는데 breakpoint가 아무 데도 없다면 점선으로 된 아이콘이 만들어지고 몇 가지 해결 방법을 볼 수 있다.

 

 위 문제를 해결하기 위해 검색창에 들어가 convert를 검색해보았다. 그러면 수많은 항목이 나열되며 알아보기 쉽지 않게 된다.

 

 따라서 Xcode 콘솔 창에 들어가 image lookup -rn convert Fruta를 타이핑하면 우리가 만든 convertToMass가 사실은 convertedToMass 였음을 쉽게 확인할 수 있다.

 

 다시 디버깅 창에서 symbolic breakpoint 이름을 convertedToMass로 바꾸면 오류가 사라진다.

 

 

3. Runtime issue breakpoints

 

 runtime issue가 발생하면 Xcode는 이를 Issue Navigator에서 보여준다. 하지만 issue는 과거에 발생한 것이고, 따라서 현재 진행 중인 상태를 알아볼 수 있는 방법이 없다.

 

 이를 해결하기 위해 symbolic breakpoint와 마찬가지로 왼쪽 하단에서 runtime issue breakpoint를 만들 수 있다.

 

 새롭게 생긴 runtime issue breakpoint 창에서 여러 가지 type을 선택할 수 있다.

 

 마지막으로 runtime issue breakpoint 창 하단의 화살표를 클릭 해 scheme editor의 diagnostics tab에 들어가 Main Thread Checker를 활성화시킨다.