Xcode 11 디버거가 매우 느립니다. 알려진 문제입니까?


95

최신 Xcode 버전 11.0 (11A420a)으로 업데이트했기 때문에 디버깅이 매우 느리고 번거 롭습니다.

편집 : 11.1 GM (11A1027)으로 업데이트 한 후에도 문제는 여전히 동일합니다.

프로젝트를 컴파일하고 시뮬레이터 또는 장치에서 실행하는 것은 문제가되지 않습니다. 그러나 중단 점에 도달하면 Xcode를 어느 정도 사용할 수 없게됩니다.

  • 중단 점에 도달하면 프로그램 실행이 즉시 중지됩니다. 그러나 Xcode는 코드 창에 위치를 표시하는 데 최대 30 초가 걸리고 변수보기의 내용을로드하는 데 1 분 정도가 걸립니다 (중단 점에서 사용 가능한 변수의 값과 상태를 표시 함).
  • 내가 사용하는 경우 에 단계 또는 이상의 단계 기능이 변수를로드하는 다음 단계 다시 다른 분을 수행하기 위해 분 정도 소요됩니다.

3.2GHz i7 및 32GB 램으로 Mac mini 2018에서 Xcode를 실행하고 있습니다. 이전에 같은 컴퓨터에서 문제없이 Xcode 10을 사용했습니다.


"Xcode slow"를 검색하면 당연히 많은 스레드와 가능한 솔루션이 나타납니다. iOS 개발자로 일하면서 Xcode가 가장 빠르고 안정적인 프로그램이 아니라는 것을 알고 있습니다. 그러나 지금만큼 나쁘지는 않았습니다.

불행히도 알려진 트릭 (Xcode 또는 Mac 다시 시작, 프로젝트 정리, Xcode 라이브러리 폴더 정리 등)은 효과가 없었습니다.

그래서 큰 질문은 :

이것이 Xcode 11에서 알려진 문제입니까? 알려진 솔루션이 있습니까?


우선 Xcode의 안정적인 최신 버전은 11A420a가 아니라 11A1027입니다. 나는 그것을 업데이트하는 것으로 시작할 것입니다.
Rafael Francisco

2
MMH, 11A420a은 앱 스토어에서 사용할 수있는 최신 버전입니다
안드레이 헤르

2
이제 11A420a로 업데이트했는데 문제는 여전히 동일합니다.
Andrei Herford

2
같은 - I 11.1 (11A1027) 시도
nikans을

3
할 수있는 한 가지는 Apple에 버그 보고서를 제출하는 것입니다. 그것이 제가 일반적으로하는 일입니다. 그들은 결국 대답합니다. 일반적으로 시스템 정보를 요청하고 몇 가지 진단을 실행해야합니다. 일반적으로 Xcode는 느리고 Apple이 문제를 해결하는 방법을 알고 있는지 잘 모르겠습니다. 저는 10 코어 iMac Pro에서 실행 중이며 Xcode는 여전히 느립니다.
Mobile Ben

답변:


26

글쎄, 나는 같은 문제가 있었고 최근에 내 계획에 대한 진단을 비활성화하는 것을 잊었다는 것을 알았습니다

여기에 이미지 설명 입력

실행 구성 열기-> 구성표 관리-> 구성표 편집-> 실행-> 진단 탭


7
답변 해주셔서 감사합니다. upvotes로 인해 일부 사용자의 문제가 해결되었다고 가정합니다. 그러나 제 경우에는 그 어떤 차이도 만들지 않았습니다. 어떤 경우에는이 힘의 도움이 불행히도 일반적인 솔루션입니다 동안 그래서
안드레이 헤르

Andrei "느려졌다"가 의미하는 몇 가지 정량적 지표를 제공 할 수 있습니까? Swift와 Objective-C의 혼합 언어 프로젝트 빌드가 일반적으로 느리다는 것을 알고 있습니까?
Gennadiy Ryabkin

2
글쎄요, 그게 다 문제라고 생각 해요 ... 우선 이것은 빌드 시간과는 아무 관련이 없습니다. 전에 서면으로 ". 아무 문제가되는 프로젝트를 컴파일하지 않고 시뮬레이터 또는 장치에서 실행 중단 점에 도달 때 엑스 코드는 더 많거나 적게 사용할 수 없게됩니다"
안드레이 헤르

멋진 Andrei이지만 디버거에 대한 내 대답입니다. 진단 페이지는 디버거의 설정을 보여줍니다. 그리고 빌드 시간에 관한 것은 없습니다. 특히 메모리 관리 및 할당에 관한 부분입니다. 스키마 및 구성의 이름을 다시 확인하십시오.
Gennadiy Ryabkin 19

Andrei, 최신 OS-X를 의미하는 Xcode 11 위에 사용자 지정 LLDB를 설치했다고 생각하지 않습니다. 그것은 당신의 환경에 특정한 것입니다. 모든 구성표 설정을 한 번 더 다시 확인하는 것이 좋습니다.
Gennadiy Ryabkin 19

1

전체 대 증분 컴파일 동작을 사용할 때 성능이 약간 향상되었습니다. 또한 Mojave와 Catalina에서 실행하면 둘 다 성능 문제가 나타납니다. 특히 Canvas 미리보기 및 기타 새로운 기능은 Xcode의 마지막 버전보다 더 많은 CPU 강도를 필요로하기 때문에 Xcode 11을 사용할 때 Mojave 성능이 낮아질 것으로 예상합니다 (이 버전의 OS에 최적화되지 않았기 때문). Catalina가 베타 버전이므로 추가 문제도 볼 수있을 것으로 예상됩니다. 시력 검사 이외의 구체적인 조치를 취하지 않았습니다. Whole Compilation의 초기 실행은 느리지 만 그 후 더 좋아지는 것 같습니다.

빠른 도움말 상태 :

요약

이 설정은 모듈의 Swift 파일이 다시 빌드되는 방식을 제어합니다. * 증분 : 필요에 따라 여러 컴파일러 프로세스를 실행하면서 오래된 모듈에서 Swift 소스 파일 만 다시 빌드합니다. * 전체 모듈 : 단일 컴파일러 프로세스에서 항상 모듈의 모든 Swift 소스 파일을 다시 빌드합니다. 선언

SWIFT_COMPILATION_MODE 값 유형

열거 (문자열)


4
컴파일 시간은 괜찮습니다. 중단 점을 사용하면 가장 가까운 블랙홀의 이벤트 지평선에 가까운 곳에서 xcode를 텔레포트합니다.
nikans

2
대답이 질문에 설명 된 문제를 해결하지 못하더라도 저자가 노력을 기울인 것을 알 수 있습니다. 그렇기 때문에 대규모 하향 표의 이유가되어서는 안됩니다.
Andrei Herford

Incremental은 실제로 디버그 빌드에서 권장되는 설정입니다 (WWDC talk developer.apple.com/videos/play/wwdc2018/408 참조 ). 아마도 이것은 프로젝트에 따라 다르지만 우리의 경우 클린 빌드는 전체 모듈 빌드보다 약간 느리지 만 (5 초) 증분 빌드의 경우 약 40 % (30 초) 더 빠릅니다.
Mike Bryant

@nikans 컴파일 시간은 다른 IDE 및 다른 언어에 비해 여전히 느립니다. 하지만 최악의 경우 디버거라는 것을 인정해야합니다.
firetrap '1910.26.12

1

선택을 취소하십시오 : 구성표 편집 에서 각 대상에서 빌드 병렬화 . 프로젝트에 많은 타겟이있는 경우 빌드 시간을 절약 할 수 있습니다.

구성표 편집 :

여기에 이미지 설명 입력


0

안전 모드에서 Xcode를 실행 해 보셨습니까? 이상적은 아니지만 이것이 효율적으로 실행할 수있는 유일한 방법이었습니다. 내 장치가 더 이상 안전 모드에서 감지되지 않는 최근 Catalina 업데이트까지입니다. 그래서 이제 원점으로 돌아 왔습니다.


내 바이러스 백신 소프트웨어로 인해 속도가 느려졌습니다. 비활성화하면 문제가 해결되었습니다.
Dino

@beefon 나는 Dino가 MacOs 안전 모드를 언급하고 있다고 생각합니다. 자세한 내용은 여기에서 확인할 수 있습니다. support.apple.com/en-us/HT201262
Bartosz Kunat

0

두 가지 경우에서 동일한 문제를 발견했습니다.

1) 앱이 Xcode에 의해 실행되지 않습니다. 즉, "실행이 실행될 때까지 대기"플래그가 Scheme Run 설정의 Info 패널에 설정되어 있습니다.

2) 구성표 설정에서 "백그라운드 가져 오기 이벤트로 인해 실행"옵션이 선택되어 있습니다 (기본값은 아님).

Xcode 옵션 위치

Xcode 11.2.1 (11B500)


0

필자의 경우 (XCode 11.x, MacOS 10.15.2) 극단적 인 디버거 속도는 다른 단일 단계 작업이 진행되는 동안 한 단계 씩 진행되는 경우에만 트리거된다는 것을 발견했습니다. 즉, 단계 버튼을 너무 빨리 눌렀습니다. 내 현재 해결 방법은 그렇게하지 않는 것입니다.

순수한 추측이지만 아마도 여러 중단 점을 동시에 서비스하려는 XCode / LLDB에 의해 트리거됩니까? 중단 점 하나를 제외하고 모든 중단 점을 제거하고 도움이되는지 확인하십시오.

관련성이있는 경우 : 저는 주로 XCode에서 C ++로 작업하고 여기저기서 약간의 Obj-C를 사용합니다. 나는 현재 Swift를 전혀 사용하지 않습니다.


0

나는 이것을 영원히 다루었 고 마침내 그것을 알아 냈습니다. 내 ~ / .lldbinit 파일의 다음 줄이었습니다.

break set -F '-[UIView layoutIfNeeded]' -c '!(BOOL)[NSThread isMainThread]' -L objc
break set -F '-[UIView(AdditionalLayoutSupport) updateConstraintsIfNeeded]' -c '!(BOOL)[NSThread isMainThread]' -L objc

나는 그 라인을 주석 처리했고 이제는 디버거가없는 것만 큼 빠릅니다!


-2

사용하지 않은 중단 점을 238 개 설정했습니다. 삭제하면 다시 빨라집니다 (진단이 켜져 있어도).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.