Xcode 디버거 : 변수 값보기 의 값을 어떻게

UITableViewController의 내 코드 :

delegate.myData = [myData objectAtIndex:indexPath.row];

디버거에서 delegate.myData또는 의 값을 어떻게 볼 수 indexPath.row있습니까? delegate.myData배열이어야 indexPath.row하고 int. 난 단지 객체의 메모리 주소를 볼 수 있습니다 delegateindexPath하지만 어디 myDatarow?

대체 텍스트



답변

Xcode 디버거에서 NSDictionary 변수의 내용을 보는 방법을 확인하십시오 .

나는 또한 사용

po variableName
print variableName

콘솔에서.

귀하의 경우에는 실행할 수 있습니다

print [myData objectAtIndex:indexPath.row]  

또는

po [myData objectAtIndex:indexPath.row]


답변

나는 개발 환경으로서의 Xcode가 변수를 디버그하는 쉬운 방법을 포함해야한다는 다른 포스터에 동의합니다. 음, 좋은 소식이 하나 있습니다!

Xcode에서 변수를 디버깅하는 방법에 대한 간단한 답변 / 튜토리얼을 검색하고 찾지 못한 후 Xcode 자체를 탐색하여 (적어도 저에게는) 매우 유용한 발견을 발견했습니다.

Xcode 4.6.3에서 변수를 쉽게 디버그하는 방법

Xcode의 메인 화면에서 스크린 샷에 표시된 오른쪽 상단 모서리 버튼을 클릭하여 하단 디버그 영역을 확인하십시오.

디버그 영역 버튼

Xcode 4.6.3의 디버그 영역

이제 코드 영역의 테두리를 클릭하여 프로그램을 일시 중지 할 코드 줄인 중단 점을 설정합니다.

중단 점

이제 디버그 영역에서이 버튼을 찾아 중간에있는 버튼을 클릭합니다. 이제 지역이 둘로 나뉘어져 있음을 알 수 있습니다.

디버그 영역 분할

이렇게 보일 것

이제 애플리케이션을 실행하십시오.

프로그램 실행 중에 첫 번째 중단 점에 도달하면 해당 중단 점에서 사용할 수있는 모든 변수가 왼쪽에 표시됩니다.

검색 필드

더 자세한 정보를 위해 변수의 왼쪽 화살표를 확장 할 수 있습니다. 검색 필드를 사용하여 원하는 변수를 분리하고 중단 점 범위에 “들어가는”때 실시간으로 변경되는 것을 확인하십시오.

단계

디버그 영역의 오른쪽에서 원하는 변수를 마우스 오른쪽 버튼으로 클릭하여 원하는대로 변수를 인쇄하도록 보낼 수 있습니다.

상황에 맞는 메뉴

보시다시피 컨텍스트 메뉴에는 매우 흥미로운 디버깅 옵션이 가득합니다. 같은 시계 이미 입력 된 명령 또는으로 제안 된 그 값 편집 … 그것은 당신의 변수의 런타임 값을 변경!


답변

또한 다음을 수행 할 수 있습니다.

  1. 실행을 일시 중지하려면 중단 점을 설정하십시오.
  2. 개체는 실행 범위 내에 있어야합니다.
  3. 개체 또는 변수 위로 마우스 포인터 이동
  4. 노란색 툴팁이 나타납니다.
  5. 도구 설명 위로 마우스를 이동합니다.
  6. 위아래를 가리키는 두 개의 작은 화살표를 클릭하십시오.
  7. 상황에 맞는 메뉴가 나타납니다.
  8. “설명 인쇄”를 선택하면 [개체 설명]이 실행됩니다.
  9. 설명은 콘솔의 출력에 나타납니다.

IMHO 조금 숨겨져 있고 성가신 …


답변

여러분의 혼란은 선언 된 속성이 (인스턴스) 변수가 아니기 때문에 (필요한 이름과 동일하게 명명 됨) 발생합니다.

표현

indexPath.row

다음과 같다

[indexPath row]

및 할당

delegate.myData = [myData objectAtIndex:indexPath.row];

다음과 같다

[delegate setMyData:[myData objectAtIndex:[indexPath row]]];

합성 된 속성에 대한 표준 명명을 가정합니다.

또한는 delegate유형으로 선언 될 수 있습니다 id<SomeProtocol>. 즉, 컴파일러가 delegate해당 시점에 실제 유형 정보를 제공 할 수 없었고 디버거는 컴파일시 제공되는 정보에 의존하고 있습니다. 때문에 id일반적인 유형 인,의 인스턴스 변수에 대한 더 컴파일 시간 정보가 없습니다 delegate.

사람들은 당신이 표시되지 않는 이유입니다 myData또는 row변수로.

-row또는 전송 결과를 검사 -myData하려면 명령 p또는 po다음을 사용할 수 있습니다 .

p (NSInteger)[indexPath row]
po [delegate myData]

또는 표현식 창을 사용합니다 (예를 들어 delegate실제 유형 임을 알고 MyClass *있는 경우 표현식을 추가하거나을 (MyClass *)delegate마우스 오른쪽 버튼으로 클릭 하고 실제 유형 (예 :)을 delegate선택 View Value as…하고 입력 할 수 있습니다 .delegateMyClass *

즉, 디버거가 더 도움이 될 수 있다는 데 동의합니다.

  • 디버거 창에 컴파일 시간 정보 대신 런타임 유형 정보를 사용하도록 지시하는 옵션이있을 수 있습니다. 당연히 디버거 속도가 느려지지만 유용한 정보를 제공합니다.

  • 선언 된 속성은 속성이라는 그룹에 표시 될 수 있으며 디버거 창에서 직접 검사 (선택 사항)를 허용 할 수 있습니다. 이것은 또한 정보를 얻기 위해 메시지를 보내거나 메소드를 실행해야하기 때문에 디버거 속도를 늦출 수 있지만 유용한 정보도 제공합니다.


답변

런타임에 콘솔 창에 값을 인쇄 할 수 있습니다. 다음은 단계입니다.

  1. 값을 가져 오려는 중단 점을 배치하십시오.
  2. 이제 단계별 디버그를 수행하십시오.
  3. 런타임에 값을 확인할 변수 / 대리자에 커서를 놓습니다.
  4. 이제 변수 / 대리자에 대한 설명이 표시됩니다.
  5. “i”를 클릭하면 자세한 설명이 표시됩니다.
  6. 콘솔 창에 세부 정보도 인쇄됩니다.

콘솔 창에 세부 정보를 인쇄하기위한 스크린 샷


답변

이것은 조금 복잡해집니다. 이러한 객체는 사용자 정의 클래스 또는 구조체이며 Xcode에서 다른 개발 환경 에서처럼 내부를 보는 것은 쉽지 않습니다.

내가 당신이라면보고 싶은 값을 몇 가지 설명과 함께 NSLog합니다.

즉 :

NSLog(@"Description of object & time: %i", indexPath.row);


답변

Run-> Show-> Expressions 시도

어레이의 이름이나 찾고있는 것을 입력하십시오.