[ios] ‘프로젝트 이름’은 최적화로 컴파일되었습니다. 스테핑이 이상하게 작동 할 수 있습니다. 변수를 사용할 수 없습니다

AFNetworking 코드로 들어 가려고하면 다음 경고가 생성됩니다.

[Project Name] was compiled with optimization - stepping may behave oddly; variables may not be available.

물론 코드를 디버깅 할 수 없습니다. 구체적으로 말하면 UIImageView+AFNetworking불가능한 범주 를 디버깅하려고합니다 . 코드를 변경해도 아무런 영향을 미치지 않으며 (시도 NSLog등) 컴파일러에서 단계를 시도 할 때 어셈블리 코드로 이동 UIImageView+TVASTAFNetworking하여 코드베이스에 존재하지 않는 카테고리 이름으로 표시 됩니다.

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

Xcode 7. iOS 9 & 8 사용. Cocoapods (프레임 워크 없음)

업데이트
최적화 프로그램이 none릴리스 및 디버그 구성 모두 에 대해 설정되어 있으며 실제로 Debugconfig를 사용하고 있음을 언급하지 않았습니다.

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

업데이트 2

Strip Debug Symbols 꺼져 있습니다.



답변

프로젝트에서 Swift를 사용하는 경우 프로젝트 / 대상 구성에 두 개의 “최적화 수준”설정이 있습니다.

둘 다 올바르게 설정했는지 확인하십시오.

  1. 프로젝트 네비게이터 분할 창에서 프로젝트를 선택하십시오.
  2. “PROJECT”트리에서 프로젝트 설정을 선택하십시오
  3. “빌드 설정”탭을 클릭하십시오
  4. “최적화 수준”을 검색하면 LLVM과 빠른 설정의 두 가지 설정이 표시됩니다.
  5. 해당 빌드 구성에 대한 적절한 설정 ( None [-O0]LLVM 및 None [-0none]Swift)을 설정하십시오.

최적화 스테핑으로 컴파일되었으며 홀수 변수가 작동하지 않을 수 있음

이렇게하면 경고가 해결되었습니다.


답변

프로젝트가 릴리스 모드 인 것 같습니다. 릴리스 모드는 많은 최적화로 앱을 컴파일하지만 디버거는 최적화를 싫어하므로 앱을 안정적으로 디버깅하려면 최적화를 줄이고 디버그 정보를 추가하는 디버그 모드로 전환해야합니다. 디버그 모드로 전환하려면 :

  • Xcode의 왼쪽 상단에서 구성표를 클릭하십시오.

Xcode의 왼쪽 상단에서 구성표를 클릭하십시오.

  • “구성표 편집 …”을 선택하십시오.

"구성표 편집 ..."을 선택하십시오.

  • “빌드 구성”드롭 다운을 클릭하십시오. 디버그 모드로 변경하십시오.

"빌드 구성"드롭 다운을 클릭하십시오.


답변

이 경고는 중단 점에 도달하고 소스가 최적화가 활성화 된 프로젝트에있는 경우에만 나타나 실제 변수 값을 볼 수 없습니다 (모든 오브젝트가없는 경우에도 nil로 표시됨)

필자의 경우 Cocoapod 종속성을 단계별로 디버깅 할 때만 발생했습니다.

따라서 기본 대상 및 프로젝트 설정이 올바르게 설정되어 있어도 (Strip Debug Symbol = OFF 및 최적화 수준 없음), Pod 프로젝트에서 중단 점에 도달 한 것과 동일해야합니다.

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


답변

이전 프로젝트 (Xcode 7.x +)를 새로운 Xcode 8.3 (8E162)으로 가져온 후 아마도 컴파일러 최적화로 인해 Swift Compiler-Optimization Level 이 기본적으로 Fast, Single-File Optimization 으로 설정되었습니다 .

전에

없음으로 변경하면 문제가 해결되었습니다.

후


답변

Editor-> Validate Settings그런 다음 모든 변경 사항을 확인하십시오. 그럼 당신은 얻을신속한 컴파일러 최적화 수준

디버그를로 설정하십시오 None.


답변

이것은 나를위한 해결책이었습니다 …

gimino의 대답을 따라 cocoapod를 사용하는 경우 Podfile에 다음과 같은 줄을 추가하십시오.

xcodeproj 'MyProject', 'Debug - local'=>:debug, 'Debug - staging'=>:debug, 'Debug - PRODUCTION'=>:debug

또는 cocoapods 버전이 1.0보다 큰 경우 (Dijmon 덕분에)

project 'MyProject', 'Debug - local'=>:debug, 'Debug - staging'=>:debug, 'Debug - PRODUCTION'=>:debug

MyProject에는 표준 ‘Debug’외에도 디버그 구성으로 ‘Debug-local’, ‘Debug-staging’, ‘Debug-PRODUCTION’이 있습니다.

기본적으로 cocoapod는 일반적으로 Pod 구성을 Release로 생성합니다.이 Podfile 행을 사용하면 디버그 구성을 알 수 있습니다.


답변

나는 오늘 같은 문제에 부딪 쳤고 (적어도 나의 경우에는) 알아 냈습니다. CocoaPods도 사용하고 있는데 테스트 대상 (Swift와 ObjC 혼합)을 실행할 때이 문제가 발생했습니다.

iOS 9.2 SDK와 함께 Xcode 7.2를 사용하고 있습니다.

아래 이미지에서 변경 전에 대상과 프로젝트에 대한 최적화를 볼 수 있습니다.

변경 전 최적화 수준

놀랍게도 해결 된 최적화가 없음 [-O0] 이지만 프로젝트 설정을 -Os 에서 -O0으로 변경 한 후에 만 컴파일러가 대상 최적화를 중지 한 것입니다.

아래에서 내 최종 설정을 볼 수 있습니다.

변경 후 최적화 수준