NSLog
Xcode 8.0 베타 (8S128d)에서는 아무것도 인쇄되지 않습니다 . printf
변경되지 않음
내 코드는 다음과 같습니다.
NSLog(@"hello from NSLog");
printf("hello from printf");
다음은 iOS 9 Simulator의 출력입니다.
2016-06-17 09:49:10.887 calmapp-dev[28517:567025] hello from NSLog
hello from printf
다음은 iOS 10 시뮬레이터의 출력입니다.
hello from printf
답변
Scheme 환경 변수에 “OS_ACTIVITY_MODE”: “disable”속성을 추가하고 (시뮬레이터에서 OS 출력을 숨기기 위해) 잊어 버렸고, 이제 실제 장치에서 실행 중일 수 있습니다.
Xcode 8에서
Product -> Scheme -> Edit Scheme -> Run -> Arguments -> Environment Variables
추가 OS_ACTIVITY_MODE
및 확인 만 (값을 추가하지 마십시오)
요약 : 이것은 Xcode 8 + iOS10의 버그입니다. 다음과 같이 해결할 수 있습니다.
-
시뮬레이터를 사용할 때 이름 “OS_ACTIVITY_MODE”와 값 “비활성화”를 추가하고 확인하십시오.
-
실제 장치에서는 “OS_ACTIVITY_MODE”만 추가하고 확인하십시오 (값을 추가하지 마십시오). Xcode8 콘솔에서 NSLog를 볼 수 있습니다.
답변
Xcode 8 베타 릴리스 노트 를 확인하면 다음과 같이 표시됩니다.
Simulator에서 실행중인 앱을 디버깅 할 때 콘솔에 로그가 표시되지 않을 수 있습니다. 해결 방법 : Simulator.app에서 command + /를 사용하여 콘솔 앱에서 시스템 로그를 열어 NSLog를 확인합니다. (26457535)
답변
답변
답변
실제 iOS 10 장치에서도 NSLog 출력을 볼 수 없습니다. 실제 장치를 사용하는 경우 Xcode (Shift + Command + 2)에서 장치 창을 열고 장치 로그를 볼 수 있지만 콘솔에는 시스템 및 모든 앱의 로그가 표시되므로 앱의 로그를보기가 어렵습니다.
(Xcode 7을 사용하고 있으므로 Xcode 문제가 아니라 iOS 10 문제 일 수 있습니다)
답변
흠 … 속성 “OS_ACTIVITY_MODE”: “disable”은 Xcode 9 로그에 NSlog가 표시되는 것을 방지합니다.
내 계획에서이 값을 선택 취소하면 로그가 복원되었습니다.
답변
미래에이 문제를 겪는 모든 사람을 위해. NSLog가 iOS 10 및 iOS 11에서 syslog에 인쇄되지 않는 이유는 Apple이 통합 로깅으로 변경했기 때문입니다.
여기에서 WWDC 이야기를 볼 수 있습니다 : https://developer.apple.com/videos/play/wwdc2016/721/
여기 문서 : https://developer.apple.com/documentation/os/logging
10부터 NSLog 대신 os_log를 사용해야합니다.
디스크에서 로그를 찾는 방법 : https://www.blackbagtech.com/blog/2017/09/22/accessing-unified-logs-image/
요약하면 다음 위치에서 /var/db/diagnostics
VM에 대한 로그를 찾을 수 있습니다./Users/USERNAME/Library/Developer/CoreSimulator/Devices/SIMULATOR-GUID/data/var/db/
모든 항목을 내부 diagnostics
및 uuidtext
단일 폴더에 복사합니다 (폴더 진단 또는 내부에있는 uuidtext는 포함하지 않음).
해당 폴더의 이름을 변경합니다 foldername.xarchive
.
Console.app에서 열거 나 OSX 유틸리티를 사용하십시오 log
.log show <path to archive> --info --predicate <options>