2013-03-07 1 views
0

내가 중단 점에서 디버거 조치로이있어 (@는 someString "someString는 %의 @입니다") :EXPR은 (무효)은 NSLog는

expr (void)NSLog(@"someString is %@", someString) 

하지만 함께 토하고있어 :

error: warning: expression result unused 
error: cannot find interface declaration for '$__lldb_objc_class' 
error: cannot find interface declaration for '$__lldb_objc_class' 
error: 2 errors parsing expression 

왜 작동하지 않습니까?

====
UPDATE

나는 완전히 새로운 Xcode 프로젝트에서 이것을 시도했다. 그리고 그것은 잘 작동합니다. 그래서, 명확하게하기 위해,이 라인은 엑스 코드 4.6에는 구문 문제가 없습니다 :

expr (void)NSLog(@"someString is %@", someString) 

을하지만, 동일한 문제에 내 이전 Xcode 프로젝트의 결과로 중단 점에서 동일한 라인을 복사.

이 특정 프로젝트의 빌드 설정에서 변경된 내용 일 수 있습니까?

답변

3

블록 내에서이 코드에 도달하지 않았는지 확인하십시오. 이것은 동일한 중단 점이 새 프로젝트에서는 작동하지만 다른 프로젝트에서는 작동하지 않는 이유를 설명합니다. 블록 내의 중단 점에있는 동안 객체의 값을 인쇄하려고 할 때 발생합니다. 해결 방법은 블록에서 NSLog를 사용하여 중단 점을 사용하는 대신 인쇄물을 출력하는 것입니다. 그것은 성가신 일입니다.

+0

고마워요. 네, 블록에서 처형당했습니다. 이유가 궁금합니다. 결국 someString은 블록에 로컬이었습니다. 링크가 있습니까? 이것에 대한 정보를 찾을 수없는 것 같습니다. – Snowcrash

1

잘못 복사하지 않으면 큰 따옴표 문자가 잘못되었다고 말할 수 있습니다. 사용 방법 :

expr (void)NSLog(@"someString is %@", someString) 

정확하게 복사했다면 known bug입니다.

+0

그는 [이 게시물] (http://stackoverflow.com/questions/742456/how-to-print-string-value-from-breakpoint-action-in-xcode-4)에서 잘못 복사했습니다. ... +1을 더럽 혔습니다. – Alladinian

+0

아니요 - 제가 확인한 첫 번째 일은 연설 마크였습니다. 음성 마크를 복사하거나 붙여 넣지 마십시오! Fwiw, Xcode 4.6을 사용하고 있습니다. 해결 방법이 있습니까? – Snowcrash

+0

@SnowCrash 내가 아는 것은 아닙니다. 그러나 나는 Xcode 4.5와 4.6에서 잘 작동한다는 것을 알고 있으므로 문제없이 작동해야한다고 생각합니다. 그러나 따옴표를 올바르게 복사 한 경우 질문에 맞지 않는 이유는 무엇입니까? – trojanfoe