pile·
모바일·컴투스컴투스·

Xcode, ‘Point’만 콕 집어 디버깅 하기

컴투스 iOS 개발팀이 Xcode의 고급 디버깅 기능인 브레이크포인트 8가지 유형과 워치포인트를 실무 활용 관점에서 정리한 가이드다. Xcode 13에서 추가된 컬럼 브레이크포인트부터 ThreadSanitizer, AutoLayout 충돌 감지까지 일상적 디버깅 상황에 맞는 도구 선택 기준을 제공한다.

핵심 포인트
  • 컬럼 브레이크포인트(Xcode 13+): 복잡한 표현식 내 특정 수평 위치를 타겟팅, 조건부 트리거 및 debugger 커맨드 실행 지원
  • Symbolic 브레이크포인트: 함수명으로 트리거, 특정 모듈 필터링으로 viewDidLoad를 전체 컨트롤러 또는 특정 프레임워크에서만 중단 가능
  • Runtime 브레이크포인트: Main Thread Checker와 Thread Sanitizer로 백그라운드 스레드 UI 작업과 동시 접근 문제 감지
  • Constraint Error 브레이크포인트: AutoLayout 충돌 시 장황한 로그 대신 정확한 디버깅 컨텍스트 제공
  • 워치포인트: 변수값 변경 시 자동 중단, LLDB 커맨드 또는 변수 뷰에서 생성해 객체 라이프사이클 추적
상세 정리
  • Source File 브레이크포인트: 라인·컬럼 두 종류, Xcode Navigator + 버튼으로 8가지 브레이크포인트 추가 가능
  • Swift Error 브레이크포인트: Swift 에러 발생 시 catch 체인의 원래 실패 지점으로 즉시 이동, 수동 브레이크포인트 배치 불필요
  • Exception 브레이크포인트: Objective-C 예외를 크래시 전에 감지, 배열 인덱스 오버플로우처럼 Swift 에러 핸들링을 우회하는 에러에 유용
  • Symbolic 브레이크포인트는 다형성을 지원해 특정 클래스 또는 프레임워크에 속한 메서드에만 제한 가능
  • Main Thread Checker: 백그라운드 스레드에서 UI 업데이트 시 자동 감지해 중단
  • Thread Sanitizer: 멀티스레드 동시 접근 문제를 런타임에 탐지
  • Constraint Error 브레이크포인트: AutoLayout 충돌 시 Xcode 로그만으로는 원인 파악이 어려운 경우 정확한 브레이크 지점 제공
  • Test Failure 브레이크포인트: 테스트 실패 지점에서 즉시 멈춰 통합 디버깅 가능
  • 워치포인트는 뷰컨트롤러 해제 시 프로퍼티가 정상적으로 nil이 되는지 객체 라이프사이클 추적에 특히 유용
왜 읽나Xcode 디버깅을 주로 라인 브레이크포인트에만 의존하는 iOS 개발자에게 상황별 최적 디버깅 도구 선택 기준과 실무 활용법을 제공한다.
컴투스
컴투스 블로그
원문은 여기서 이어서 읽을 수 있어요
원문 읽기
읽음 (0)

이 글과 비슷한

  1. 모바일·당근당근 테크블로그·

    웹뷰 다음의 레일을 깔다: 당근이 Lynx를 선택한 이유

    당근 프론트엔드코어팀이 WebView 기반 화면의 첫 프레임 렌더링 문제를 해결하기 위해 Lynx를 도입한 기록이다. 레퍼런스가 거의 없는 기술을 코드베이스 직접 분석으로 검증한 뒤 프로덕션에 적용했고, 1.9백만 사용자 A/B에서 Android 18%, iOS 37%의 첫 프레임 단축을 달성했다.

    요약 이어보기
    #cross-platform#webview#mobile-performance+2
  2. 모바일·토스 SLASH토스 SLASH·

    토스의 디바이스 팜 만들기

    토스가 각 팀이 각자 운영하던 작은 디바이스 팜을 하나의 중앙 플랫폼 '네뷸라(Nebula)'로 통합한 과정을 다룬다. Appium 대신 자체 드라이버를 개발해 클릭 13.5배, 텍스트 입력 10배의 성능을 달성했고, Android와 iOS 미러링도 직접 내재화해 실기기 원격 조작과 화면 실시간 공유를 동시에 가능하게 만들었다. 현재 100대를 넘어 수백 대를 향해 24시간 가동 중이다.

    요약 이어보기
    #android#ios#appium+2