Xcode breakpoint 좀 더 알차게 써보기

shintwl·2024년 5월 20일
0

Xcode의 브레이크 포인트가 제공하는 여러가지 기능을 알아봅시다.

멈추고 싶은 라인에 브레이크 걸기

Xcode의 에디터 화면에서 소스코드 좌측 라인 넘버를 클릭하면 해당 부분에 브레이크 포인트를 걸 수 있습니다.
생성된 브레이크 포인트를 드래그해서 빼내면 사라집니다.
클릭하면 연한 파랑으로 바뀌며 비활성화 됩니다.

set breakpoint

브레이크 포인트 모아보기

Xcode 좌측 패널에서 설정된 브레이크 포인트를 모아서 볼 수 있습니다.
이미지 내 "Modified breakpoint"는 브레이크 포인트에 작동 조건을 추가한 경우를 의미합니다 (아래에 나옵니다)

break point panel

브레이크 포인트에 작동 조건 설정하기

이미 생성된 브레이크 포인트를 더블 클릭 혹은 우클릭 & Edit breakpoint 하여 브레이크 포인트가 작동하는 조건을 설정할 수 있습니다.

특정 횟수 이상 반복한 후에 브레이크 포인트가 작동하도록 설정하거나
iteration

특정 조건이 만족된 경우에만 작동하도록 설정할 수 있습니다
condition

소스코드 이외의 부분에 브레이크 포인트 설정하기

오토레이아웃과 같은 소스코드 이외의 부분에도 브레이크 포인트를 설정할 수 있습니다
브레이크 포인트 모아보기 항목의 "Add breakpoint" -> Symbolic breakpoint를 통해 설정할 수 있습니다.
(사용 가능한 심볼의 종류를 정리한 애플 문서는 보이지 않네요..)
앱이 동작하면서 수시로 호출되는 심볼에 브레이크 포인트를 설정할 때는 조건을 추가하거나 활성화 여부를 수동으로 조작하는 방식으로 조사하고자 하는 코드가 실행될 때만 브레이크 포인트가 작동하도록 하는 것이 좋다고 합니다.
symbolic breakpoint

예외(exception) 상황에 브레이크 포인트 설정하기

처리되지 않은 (uncaught) 예외 상황이 발생할 때 브레이크 포인트가 작동하도록 설정할 수 있습니다.
Objective-C 코드에서 발생하는 예외는 Xcode에서 문제 발생 지점을 Appdelegate 혹은 main 메서드를 가르키기 때문에 브레이크 포인트를 지정하면 문제 지점을 찾는 데 도움을 받을 수 있습니다.
브레이크 포인트 모아보기 항목의 "Add breakpoint" -> Exception breakpoint를 통해 설정할 수 있습니다.
swift exception
브레이크 포인트를 설정하지 않으면 Objective-C코드에서 예외 발생시 이런 식으로 보여줍니다.
objc exception
브레이크 포인트를 설정하면 위치를 알려줍니다
objc exception with breakpoint

런타임 이슈에 브레이크 포인트 설정하기

Xcode sanitizer 를 통해 여러 런타임 이슈를 발견할 수 있습니다. (사용법은 링크를 참고하세요)

sanitizer를 사용하지 않았을 때 이렇게 보이던 문제가
without sanitizer
이렇게 바뀝니다
with sanitizer
더 자세한 내용은 여기를 통해 알아볼 수 있습니다 (https://developer.apple.com/documentation/xcode/diagnosing-memory-thread-and-crash-issues-early)

브레이크 포인트에 액션 추가하기

브레이크 포인트를 더블 클릭하면 브레이크 포인트를 세부적으로 설정할 수 있습니다.
세부 설정 창에서 Action 항목을 통해 브레이크 포인트에 도달했을 때 수행될 동작을 지정할 수 있습니다.
소리 재생도 가능합니다.
(애플은 브레이크 포인트에서 앱이 멈추지 않고 진행되게 하면서 브레이크 포인트 도달은 확인할 때 쓰면 유용하다고 말합니다.)

우측의 + 버튼을 통해 여러가지 동작을 지정할 수도 있습니다
breakpoint action

참고

https://developer.apple.com/documentation/xcode/setting-breakpoints-to-pause-your-running-app

https://h4njun.tistory.com/entry/%EB%8F%99%EC%8B%9C%EC%84%B1-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D6-Race-Condition%EA%B2%BD%EC%9F%81-%EC%83%81%ED%83%9C-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95

1개의 댓글

comment-user-thumbnail
2024년 5월 25일

브레이크 포인트에 작동 조건을 설정하는 건 iOS 개발하면서 정말 처음 보네요 크…
덕분에 좋은 정보 알게 되었습니다 ㅎㅎ 감사합니다 👍🏻👍🏻

답글 달기