IT story

iOS 시뮬레이터에서 콘솔 로그를 얻으려면 어떻게해야합니까?

hot-time 2020. 4. 19. 13:55
반응형

iOS 시뮬레이터에서 콘솔 로그를 얻으려면 어떻게해야합니까?


Xcode에서 앱을 테스트하지 않으면 iOS 시뮬레이터에서 어떤 일이 발생하는지 확인하고 싶습니다.

예를 들어, Safari 시뮬레이터에서 링크를 열면 콘솔에서 어떤 일이 발생하는지 확인하거나 웹 응용 프로그램을 설치하면 콘솔에서 누르는 링크를 확인하십시오.

어떻게해야합니까?

Xcode 또는 Terminal에서보고 싶지만 다른 비트의 소프트웨어를 사용해야하는 경우 문제가되지 않습니다.


iOS 시뮬레이터> 메뉴 막대> 디버그> 시스템 로그 열기


옛날 방식 :

iOS 시뮬레이터는 로그를 stdout에 직접 인쇄하므로 시스템 로그와 로그가 혼합 된 것을 확인할 수 있습니다.

터미널을 열고 다음을 입력하십시오. tail -f /var/log/system.log

그런 다음 시뮬레이터를 실행하십시오.

편집하다:

Mavericks / Xcode 5에서 작동이 중지되었습니다. 이제 자체 폴더에서 시뮬레이터 로그에 액세스 할 수 있습니다. ~/Library/Logs/iOS Simulator/<sim-version>/system.log

Console.app을 사용하여 이것을 보거나 꼬리를 할 수 있습니다 (예 : iOS 7.0.3 64 비트).

tail -f ~/Library/Logs/iOS\ Simulator/7.0.3-64/system.log

편집 2 :

그들은 지금 ~/Library/Logs/CoreSimulator/<simulator-hash>/system.log

tail -f ~/Library/Logs/CoreSimulator/<simulator-hash>/system.log


데스크탑 Safari를 통해 iOS 시뮬레이터의 콘솔을 볼 수 있습니다. 데스크탑 Safari를 사용하여 실제 iOS 장비의 콘솔을 보는 방법과 비슷합니다.

시뮬레이터가 실행 중이고 웹 페이지가 열릴 때마다 데스크탑 사파리의 개발 메뉴 아래에 iOS 시뮬레이터 콘솔을 볼 수있는 옵션이 있습니다.

개발-> iPhone 시뮬레이터-> 사이트 이름


시뮬레이터에는 옵션을 열 수 있습니다. console

Debug > Open System Log

또는

keyboard shortcut: ⌘/

시뮬레이터 메뉴 스크린 샷


iOS 8 및 iOS 9

iOS 8 및 iOS 9에서이 위치는 다음과 같습니다.

~/Library/Logs/CoreSimulator/<DEVICE_CODE>

따라서 다음이 작동합니다.

tail -f ~/Library/Logs/CoreSimulator/<DEVICE_CODE>/system.log

DEVICE_CODE값은 다음 콘솔 명령을 통해 찾을 수 있습니다.

instruments -s devices

당신은 의지해서는 안됩니다 instruments -s. 커맨드 라인에서 시뮬레이터 작업을 위해 공식적으로 지원되는 도구는 xcrun simctl입니다.

장치의 로그 디렉토리는로 찾을 수 있습니다 xcrun simctl getenv booted SIMULATOR_LOG_ROOT. 위치가 변경 되더라도 항상 정확합니다.

이제 상황이 os_log바뀌면서 호스트 Mac에서 Console.app를 여는 것이 더 쉬워졌습니다. 부팅 된 시뮬레이터는 실제 장치와 마찬가지로 왼쪽에 로그 소스로 표시되어야합니다. 부팅 된 시뮬레이터에서 로그 명령을 실행할 수도 있습니다.

# os_log equivalent of tail -f
xcrun simctl spawn booted log stream --level=debug

# filter log output
xcrun simctl spawn booted log stream --predicate 'processImagePath endswith "myapp"'
xcrun simctl spawn booted log stream --predicate 'eventMessage contains "error" and messageType == info'

# a log dump that Console.app can open
xcrun simctl spawn booted log collect

# open location where log collect will write the dump
cd `xcrun simctl getenv booted SIMULATOR_SHARED_RESOURCES_DIRECTORY`

시뮬레이터의 웹 페이지에서 Safari 개발자 도구 (JS 콘솔 포함)를 사용하려면 시뮬레이터 중 하나를 시작하고 Safari를 연 다음 Mac에서 Safari로 이동하면 메뉴에 시뮬레이터가 표시됩니다.

Safari 주소 표시 줄에서 URL을 드래그하여 시뮬레이터 창에 놓아 시뮬레이터에서 URL을 열 수 있습니다. 을 사용할 수도 있습니다 xcrun simctl openurl booted <url>.


Swift 를 사용하는 경우 printlnxLog의 디버그 영역에 나타나는 디버그 로그에만 인쇄 한다는 점 기억하십시오 . system.log에 인쇄하려면 예전과 NSLog같이 사용해야 합니다.

그런 다음 메뉴, 디버그> 시스템 로그 열기 ... (cmd + /)를 통해 시뮬레이터 로그를 볼 수 있습니다.


광미 /var/log/system.log가 나를 위해 작동하지 않았다. 를 사용하여 로그를 찾았습니다 Console.app. 그들은에 있었다

~/Library/Logs/iOS Simulator/{version}/system.log


XCode> 6.0 및 iOS> 8.0 아래 코드는 XCode 버전> 8.0 인 경우 작동합니다

아래의 작은 스크립트를 사용하여 시뮬레이터 로그를 시스템 콘솔에 연결합니다.

#!/bin/sh
sim_dir=`xcrun instruments -s | grep "iPhone 6 (8.2 Simulator)" | awk {'print $NF'} | tr -d '[]'`
tail -f ~/Library/Logs/CoreSimulator/$sim_dir/system.log

Grep에 사용 된 시뮬레이터 유형을 인수로 전달할 수 있습니다. 위의 게시물에서 언급했듯이 Xcode 버전에 따라 사용할 수있는 시뮬레이터 유형을 보는 simctl and instrument 명령이 있습니다. 사용 가능한 장치 / 시뮬레이터 목록을 보려면

xcrun instruments -s

또는

xcrun simctl list

이제 장치 코드 또는 시뮬레이터 유형을 스크립트의 인수로 전달하고 grep 내부의 "iPhone 6 (8.2 Simulator)"를 $ 1로 바꿀 수 있습니다


ConsoleMac 에서 응용 프로그램을 사용할 수 있습니다 . "장치"에서 장치를 선택하십시오.

여기에 이미지 설명을 입력하십시오


iOS 시뮬레이터를 통해 직접 로그를 열 수 있습니다. Debug -> Open System Log...도입시기가 확실하지 않으므로 이전 버전에서는 사용하지 못할 수 있습니다.

참고 URL : https://stackoverflow.com/questions/10165641/how-can-i-get-the-console-logs-from-the-ios-simulator

반응형