[ios] Xcode 디버거는 객체를 인쇄하지 않고 nil을 표시합니다.
Xcode는를 사용하여 개체를 인쇄하려고 할 때 오류가 po <objectName>
있지만 하나의 프로젝트에 대해서만 오류를 표시합니다 .
오류 : 구조체를 구체화 할 수 없습니다 : 변수 <varName>의 크기가 ValueObject의 크기와 일치하지 않습니다. 실행에서 오류가 발생했습니다. PrepareToExecuteJITExpression
Xcode 디버거는 또한 모든 객체 가 그렇지 않을 때 nil
( self
제외됨) NSLog
으로 표시합니다 (이미지에 표시된대로 올바른 출력을 표시 함). 프로젝트에 어떤 문제가 있는지 모르겠습니다. 다른 모든 프로젝트는 잘 작동합니다.
그것이 무엇인지 알 수 있습니까? (프로젝트를 청소해도 효과가 없습니다.)
답변
“릴리즈 모드”에 있지 않습니까?
변수 값을 보려면 “디버그 모드”에 있어야합니다 (시작 / 중지 버튼 근처 왼쪽 상단 모서리에있는 프로젝트 이름을 클릭 한 다음 “구성표 편집 …”, “실행”설정, ” 정보 “탭을 클릭 한 다음”빌드 구성 “을 선택합니다. 여기에서”디버그 “를 설정합니다.”릴리스 “에있는 경우 모든 문제가 발생합니다.)
답변
디버그 구성에 대한 “최적화 수준”을 “없음”으로 설정하고 문제를 해결했습니다.
답변
구성표 설정에서 Address Sanitizer가 꺼져 있는지 확인하십시오. Address Sanitizer는 디버거에서 제대로 작동하지 않습니다.
- 구성표 편집 (제품 >> 구성표 >> 구성표 편집)으로 이동하고 실행을 선택한 다음 진단 탭으로 이동하십시오.
- “Address Sanitizer 활성화”가 꺼져 있는지 확인하십시오.
답변
모두 자신의 솔루션을 가지고있는 것 같습니다.
나를 위해, 내가 사용 Objective-C
하고 Swift
같은 시간에.
우선, 이동 TARGETS -> Build Settings
및 검색하려면code generation
당신은 찾을 수 Apple LLVM 6.0
및 Swift Compiler
Optimization Level
모두를로 변경 None
한 다음 디버그하면 값이 아닌 것을 알 수 있습니다nil
놀랍게도 일단 값을 볼 수있게되면이 문제를 영구적으로 해결 한 다음 이전의 값을 변경할 수 Optimization Level
있습니다.
답변
이 문제가 발생할 수있는 다른 방법이 있습니다. 저에게는 디버그 빌드에서도 “Other C Flags”값이 “-O2″로 설정 되었기 때문입니다. 디버그 빌드에서이 기능을 끄면 문제가 해결되었습니다.