개발하는거북이 어플 만들었어요

앱 개발/iOS

[iOS] 딥 링킹 환경에서 콘솔 출력하기

tedium._.dev 2025. 3. 25. 15:25

개요

종종 딥 링킹 등을 통해 외부 환경에서 앱을 실행하고, 그에 따른 결과를 디버깅해야 할 때가 있다.

그러나 기본적으로 XCode에서는 앱 빌드 → 실행 프로세스를 통해서만 XCode 디버깅 모드와 연결되며, 이후 어플리케이션 종료 시 해당 연결이 끊기게 된다.

즉, 일반적으로는 외부 환경에서 어플리케이션 실행 시 XCode가 이를 감지하지 못해, 콘솔 출력을 포함한 디버깅이 불가능하다.

어떻게 문제를 해결할 수 있을 지에 대해 알아보자.

 

해결책

1. Launch Option 변경

Launch Option을 확인하면, 처음에는 ‘Automatically’로 설정되어 있을 것이다. 이를 ‘Wait for the executable to be launched’로 변경한다.

해당 옵션으로 변경 시 CMD + R 이후 앱을 자동 실행하지 않고, 수동 실행할 때까지 XCode가 대기하게 된다.

 

2. print() 대신 logger.notice() 사용

Launch Option을 ‘Wait for the executable to be launched’로 변경 시, print()의 출력은 더 이상 콘솔이 아닌 stdout으로 빠져버리게 되므로 print()를 통한 콘솔 출력이 정상적으로 작동하지 않을 수 있다.

이에 대한 대안으로, OS 단에서의 로그를 감지하는 Logger를 사용해야 한다.

import os.log

// Logger 인스턴스 생성
let logger = Logger(subsystem: "com.kelin.vladimir", category: "Debug")

// print(connectionOptions) -> 출력 콘솔에 보이지 않음

// 아래와 같은 형태로 log 출력 -> 출력 콘솔에 정상적으로 표기됨
logger.debug("\(connectionOptions, privacy: .public)")

 

위 두 설정을 통해, 딥 링킹을 통해 어플리케이션을 실행시키는 등 외부 환경에서도 콘솔을 통한 디버깅이 가능할 것이다!