Xcode 디버거는 객체를 인쇄하지 않고 0으로 표시합니다.
Xcode는 객체를 인쇄할 때 오류를 표시합니다.po <objectName>
단 하나의 프로젝트에 대해서만.
오류: 구조체를 구현할 수 없습니다. 변수 <varName>의 크기가 실행에서 오류가 발생하여 준비할 수 없습니다. JIT 표현식
Xcode 디버거는 또한 모든 객체를 다음과 같이 표시합니다.nil
(self
제외), 그렇지 않은 경우(NSLog
는 이미지에서 보는 바와 같이 올바른 출력을 보여줍니다.그 프로젝트에 무슨 문제가 있는지 모르겠습니다.다른 모든 프로젝트는 잘 작동합니다.
그게 무엇인지 아십니까? (프로젝트를 청소하는 것은 아무 효과가 없었습니다.)
릴리스 모드가 아닌 것이 확실합니까?
변수 값을 보려면 "디버그 모드"에 있어야 합니다(시작/중지 단추 근처의 왼쪽 상단 모서리에서 프로젝트 이름을 클릭한 다음 "구성 편집..."을 클릭하십시오). 그런 다음 "실행" 설정, "정보" 탭, "빌드 구성"을 차례로 선택합니다.여기서 "디버그"를 설정합니다.만약 그것이 "릴리스"에 있었다면 그것은 당신이 모든 닐을 본 문제입니다.)
디버깅 구성에 대한 "최적화 수준"을 "없음"으로 설정했는데 문제가 해결되었습니다.
- 프로젝트로 이동
Build settings
- 서치
Debug
- 아래
Apple Clang - Code Generation
확인.Optimization Level
- 세트
Debug
로.None [-OO]
그런 다음 디버그 영역 또는 콘솔에서 변수 값을 볼 수 있습니다.
구성표 설정에서 주소 검사기가 꺼져 있는지 확인합니다.주소 검사기가 디버거에서 제대로 작동하지 않습니다.
- Edit Scheme (Product >> Scheme >> Edit Scheme)으로 이동하고 Run을 선택한 다음 Diagnostics 탭으로 이동합니다.
- "주소 삭제 사용"이 해제되었는지 확인합니다.
모든 사람들은 각자의 해결책이 있는 것 같습니다.
저는.Objective-C
그리고.Swift
동시에
먼저, 로 이동합니다.TARGETS -> Build Settings
검색합니다.code generation
찾을 수 있을 것입니다Apple LLVM 6.0
그리고.Swift Compiler
변경 내용Optimization Level
에 이르기까지None
그런 다음 디버그, 값이 아닐 수도 있습니다.nil
놀랍게도 일단 당신이 가치를 볼 수 있게 되면, 당신은 이 문제를 영구적으로 해결할 수 있고, 그러면 당신은 그것을 바꿀 수 있습니다.Optimization Level
예전처럼.
이 문제가 발생할 수 있는 다른 방법이 있습니다.디버그 빌드에 대해서도 "Other C Flags" 값이 "-O2"로 설정되었기 때문입니다.디버그 빌드에 대해 이 기능을 해제하면 문제가 해결되었습니다.
저에게 Xcode는 디버거 출력을 필터링하고 있었습니다.출력 설정이 Debugger Output 또는 All Output인지 확인합니다.
저는 이 문제에 직면했고 그것이 다음과 같은 이유라는 것을 발견했습니다.Deployment Postprocessing = YES
설정을 클릭합니다.
를 변경내로 NO
아래 스크린샷에서 보는 것처럼 수정했습니다.
Xcode 버전: OSX 10.9.5에서 6.0.1(6A317)
저도 비슷한 문제에 부딪혔을 뿐입니다.어느 순간 Xcode 디버거는 값으로 초기화되었지만 일부 개체 유형, 특히 NSS 문자열을 (null)로 인쇄했습니다.다음을 통해 인쇄됨
NSLog(@"String value: %@", myString);
개체에 대한 올바른 값이 표시되었습니다.
혼란스럽군요!문제를 해결하는 것은 꽤 쉬웠습니다.방금 Xcode를 종료하고 컴퓨터를 다시 시작했습니다.Xcode를 다시 시작한 후 모든 것이 다시 정상적으로 작동합니다 :).
ㅠㅠLink-Time Optimization = No
디버그 모드로 설정할 수 있습니다.
- 파생 데이터 삭제
- Quite Xcode / 다시 시작
- 프로젝트 정리
그게 저에게 필요한 전부입니다.
이 볼 수 있는 것입니다.error: <EXPR>:1:1: error: use of unresolved identifier
하려고 할 때마다po
변광성
나에게 해결책은 다음으로 가는 것이었습니다.Build Settings
.Optimization Level
그리고 각각을 확인합니다.Debug
설정이 다음으로 설정되었습니다.None
.
빌드 설정에서 "기타 C 플래그"로 이동하여 디버그 값을 -o2에서 -O0으로 설정합니다.
이 문제도 발생했는데 릴리스 모드에 있는 것을 발견하면 디버깅으로 전환합니다.고정불변의알고보니 청소를 먼저 해야 했습니다(cmd+shift+k).
그래서 저는 릴리스 모드에서 빌드된 후 모든 것이 개발에서 다시 컴파일되지 않고 soldb가 기호를 제대로 읽을 수 없다고 생각합니다.청소를 하고 개발을 다시 컴파일한 후에 저에게 효과가 있었습니다.
는 매우 되었을 때 이 문제에 했습니다. - 하지만 이 를 인쇄하려고 나는매구인방로의으식이추존성을었가때다되니실이행습 -했것은작그동하만지무 -당하당됩얻인게다니은신면고를려하쇄가언이서에프크신이워임레우제문체적를▁get▁i▁when▁something▁on▁you▁problem됩얻당게다니나은▁some신▁from하▁thisency▁but▁was▁ran면▁depend▁added▁when▁you▁framework▁it▁-▁this▁way▁in는▁to고인려하▁specific▁print▁aerror
솔루션은 일반적인 방식으로 이 종속성을 추가하는 것이었습니다.
현실은 시스템이 즉시 작동해야 하며 여러 가지 설정에 대한 링크로 인해 작동하거나 작동하지 않을 수도 있습니다.
디버깅 모드에서는 Apple만이 대답할 수 있는 수수께끼인데(그들이 신경을 썼는지, 최근에는 신경을 썼는지 의심이 가는데) 시스템이 항상 디버깅을 허용하지 않는 이유는 무엇입니까?
결국 debug/non-debug의 차이는 메모리/디스크 공간만 채우는 메타데이터가 있는 추가 테이블일 것입니다.
시뮬레이터나 장치에 대해 직접 컴파일하는 경우 추가 메가바이트는 신경 쓰지 않습니다.
그래서 우리는 아주 기본적이고 단순한 일을 하기 위해 여분의 루프를 운영해야 합니다. 지난 세기 이래로 제가 알고 있는 모든 것들은 잘 해내고 있습니다.
또한 "Debug"에서 링크 시간 최적화를 "Monolithic"에서 "No"(xcode 8)로 변경했습니다.
언급URL : https://stackoverflow.com/questions/19870176/xcode-debugger-doesnt-print-objects-and-shows-nil-when-they-arent
'it-source' 카테고리의 다른 글
기존의 정렬되지 않은 목록에 목록 항목을 추가하는 방법 (0) | 2023.05.11 |
---|---|
Windows 서비스가 있는지 확인하고 PowerShell에서 삭제 (0) | 2023.05.11 |
Eclipse JUNO가 시작되지 않습니다. (0) | 2023.05.11 |
로컬 Git 브랜치를 원격의 마스터 브랜치로 푸시하려면 어떻게 해야 합니까? (0) | 2023.05.11 |
WPF/WP7에서 문자열 목록을 ListBox로 데이터 바인딩하려면 어떻게 해야 합니까? (0) | 2023.05.11 |