[ios] Xcode 디버거는 객체를 인쇄하지 않고 nil을 표시합니다.

Xcode는를 사용하여 개체를 인쇄하려고 할 때 오류가 po <objectName>있지만 하나의 프로젝트에 대해서만 오류를 표시합니다 .

스크린 샷

오류 : 구조체를 구체화 할 수 없습니다 : 변수 <varName>의 크기가 ValueObject의 크기와 일치하지 않습니다. 실행에서 오류가 발생했습니다. PrepareToExecuteJITExpression

Xcode 디버거는 또한 모든 객체 가 그렇지 않을 때 nil( self제외됨) NSLog으로 표시합니다 (이미지에 표시된대로 올바른 출력을 표시 함). 프로젝트에 어떤 문제가 있는지 모르겠습니다. 다른 모든 프로젝트는 잘 작동합니다.

그것이 무엇인지 알 수 있습니까? (프로젝트를 청소해도 효과가 없습니다.)



답변

“릴리즈 모드”에 있지 않습니까?

변수 값을 보려면 “디버그 모드”에 있어야합니다 (시작 / 중지 버튼 근처 왼쪽 상단 모서리에있는 프로젝트 이름을 클릭 한 다음 “구성표 편집 …”, “실행”설정, ” 정보 “탭을 클릭 한 다음”빌드 구성 “을 선택합니다. 여기에서”디버그 “를 설정합니다.”릴리스 “에있는 경우 모든 문제가 발생합니다.)


답변

디버그 구성에 대한 “최적화 수준”을 “없음”으로 설정하고 문제를 해결했습니다.


답변

구성표 설정에서 Address Sanitizer가 꺼져 있는지 확인하십시오. Address Sanitizer는 디버거에서 제대로 작동하지 않습니다.

  1. 구성표 편집 (제품 >> 구성표 >> 구성표 편집)으로 이동하고 실행을 선택한 다음 진단 탭으로 이동하십시오.
  2. “Address Sanitizer 활성화”가 꺼져 있는지 확인하십시오.

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


답변

모두 자신의 솔루션을 가지고있는 것 같습니다.

나를 위해, 내가 사용 Objective-C하고 Swift같은 시간에.

우선, 이동 TARGETS -> Build Settings및 검색하려면code generation

당신은 찾을 수 Apple LLVM 6.0Swift Compiler

Optimization Level모두를로 변경 None한 다음 디버그하면 값이 아닌 것을 알 수 있습니다nil

놀랍게도 일단 값을 볼 수있게되면이 문제를 영구적으로 해결 한 다음 이전의 값을 변경할 수 Optimization Level있습니다.


답변

이 문제가 발생할 수있는 다른 방법이 있습니다. 저에게는 디버그 빌드에서도 “Other C Flags”값이 “-O2″로 설정 되었기 때문입니다. 디버그 빌드에서이 기능을 끄면 문제가 해결되었습니다.


답변

필터링 된 디버그 출력

나를 위해 Xcode는 디버거 출력을 필터링했습니다. 출력 설정이 디버거 출력 또는 모든 출력인지 확인하십시오


답변

방금이 문제가 발생 Deployment Postprocessing = YES하여 빌드 설정 때문인 것으로 나타났습니다 .

NO아래 스크린 샷에서 볼 수 있듯이 이것을 수정 하여 수정하십시오.

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

Xcode 버전 : OSX 10.9.5의 6.0.1 (6A317)