홈으로 돌아가기

iOS 로그 수집: 디버깅을 위한 7가지 방법

이 기사는 iOS 로그 수집 7가지 방법을 설명합니다: sysdiagnose를 통한 .ips, log collect CLI, Console. 크래시 EXC_BAD_ACCESS, JetsamEvent, 네트워크 오류 예제. Xcode 없이 성능 및 버그 분석을 위해.

7가지 iOS 로그 방법: sysdiagnose 및 CLI
Advertisement 728x90

iOS 앱 디버깅: 시스템 로그 수집 7가지 방법

iOS 로그는 앱 내부 이벤트(네트워크 요청, 오류, UI 멈춤, 크래시)를 기록합니다. 시각적 표시 없이 문제를 정확히 파악하는 데 도움이 됩니다. 예를 들어 Pokemon GO의 EXC_BAD_ACCESS, Console의 메인 스레드 I/O, log collect의 CFNetwork 타임아웃 등이 있습니다.

로그는 크래시 보고서(EXC_BAD_ACCESS, SIGSEGV)와 진단 로그(성능, 네트워크, 메모리)로 나뉩니다. 테스터들은 이를 통해 함수 호출을 확인하고, 서버 상호작용을 분석하며, 숨겨진 버그를 찾아냅니다.

.ips 파일: sysdiagnose를 통해

자동 생성된 보고서는 Settings → Privacy & Security → Analytics & Improvements → Analytics Data에서 확인할 수 있습니다. 형식: event_type_date_time.ips, 예: AtiClient-2024-08-14-152242.ips.

Google AdInline article slot

보고서 유형:

  • CrashReport: 예외와 신호(번들 ID 기준, 예: VKClient).
  • JetsamEvent: RAM 부족으로 인한 언로딩(메모리 누수).
  • Watchdog: 앱 시작 타임아웃 또는 멈춤.
  • SpinReport: 응답 없는 높은 CPU 사용(데드락).
  • NotificationServiceExtension: 푸시 알림 실패.

수동 생성: 볼륨 버튼 + 측면 버튼을 동시에 누름(1~1.5초), 파일 stacks.

AirDrop으로 내보내기. 파일은 자동 삭제되니 즉시 수집하세요.

Google AdInline article slot

사용 사례: Xcode 없이 실패 분석, 메모리/네트워크 분석.

log collect CLI: 아카이브용 명령줄 도구

Xcode Command Line Tools, USB 연결, Terminal 필요. libimobiledevice로 UDID 확인.

최대 10일 로그 수집(sysdiagnose는 순간 스냅샷과 달리). 더 빠르고 자동화 가능하며 크기 조절 가능.

Google AdInline article slot

기본 명령어:

sudo log collect --device-udid <UDID> --last 10m --output iphone_logs.logarchive

주요 매개변수:

  • --output ~/Desktop/iphone_logs.logarchive — 저장 경로.
  • --last 30m / 2h / 1d — 기간.
  • --start "2025-08-20" --end "2025-08-20 14:30:00" — 날짜.
  • --size 100m — 크기 제한.
  • --device-udid A1B2C3D4R5F8G8H8I1J0 — UDID 기준(권장).

분석:

log show --archive system_logs.logarchive --predicate 'process == "AtiClient" AND messageType == "error"'

필터: 프로세스, 오류, 기간.

sysdiagnose와 비교:

| 항목 | log collect | sysdiagnose |

|-----------|----------------|---------------|

| 기간 | 최대 10일 | 생성일 |

| 자동화 | CLI | 수동 |

| 크기 | 조절 가능 | 큼 |

| 속도 | 빠름 | 10~15분 |

사용 사례: 불안정한 버그, 성능 추이, 크래시 맥락.

Console: 실시간 모니터링

Xcode → Window → Devices and Simulators → Open Console. 프로세스별 필터(예: AtiClient). 실시간 표시: 메인 스레드 Hang Risk, libRPAC.dylib 실패.

예시 로그:

Hang Risk com.apple.runtime-issues
message: This method does I/O on the main thread...
libRPAC.dylib failure 19:12:18.350727+0300 AtiClient

오프라인 분석을 위해 .logarchive로 내보내기.

4~7번 방법: 고급 수집

  • Xcode Devices and Simulators: UDID별 로그, 서브시스템 필터(CFNetwork, Jetsam).
  • libimobiledevice: Xcode 없이 로그 스트리밍 idevicesyslog.
idevicesyslog -u <UDID>
  • 코드 내 os_log: os_log_tos_log API로 커스텀 로그. 레벨: debug, info, error.
  • Instruments: 로그와 프로파일링(Time Profiler, Leaks).

주요 요점

  • 즉시 실패: .ips (CrashReport, Jetsam).
  • 장기 추이: log collect (최대 10일, CLI).
  • 실시간 디버깅: Console (메인 스레드 I/O).
  • 정확한 디바이스 타겟팅: UDID 필요.
  • 전체 분석: sysdiagnose + log show 조합.

— Editorial Team

Advertisement 728x90

다음 읽기