Xcode 전체 스택 추적


79

어쨌든 디버깅은 전체 스택 추적을 볼 수있는 동안 메인 스레드에서 호출 된 메서드 목록입니다. 또는 명령 창에서 인쇄하는 방법.



프로그래밍 방식으로 Mihir가 설명하는대로 callStackSymbols를 사용할 수 있습니다. 그러나 물론 Xcode에서 중단 점 (또는 "일시 중지"누르기)에서 중지하고 왼쪽 열의 스택을 검사 할 수도 있습니다. (항상 예외 중단 점을 활성화합니다.)
Hot Licks 2013

1
(스택을 조사하는 것이 중요하다는 것을 깨닫기 위해 +1. Xcode를 시작하는 사람들이 이것을 고맙게 생각하는 사람이 너무 적습니다.)
Hot Licks

나는 똑같이하고 있지만 스택 추적에서 5 또는 6 개의 메서드 호출을 볼 수 있으며 그 후에는 25 개의 UIApplicationMain과 26 개의 메인에서 볼 수 있습니다. 6에서 25 사이의 메서드를 볼 수 없습니다. 완전한 스택 추적을보고 싶습니다.
NaXir 2013

1
nslog를 통해 얻었습니다. 감사합니다
NaXir 2011

답변:


81

NSLog에서 스택 추적을 인쇄 할 수 있습니다.

NSLog(@"Stack trace : %@",[NSThread callStackSymbols]);

충돌시 단어 옆에 다음을 (lldb)입력 할 수 있습니다.

po [NSThread callStackSymbols]

편집하다:

Swift의 콘솔에서 더 나은 출력을 위해 다음 줄을 대신 사용할 수 있습니다.

Thread.callStackSymbols.forEach{print($0)}

11
lldb 내에서 다음과 같이 인쇄 할 수 있습니다. po [NSThread callStackSymbols]
Max MacLeod

대답 업데이트
미 히어 메타

포 Thread.callStackSymbols 반환cannot use dot operator on a type
pho_pho

141

bt(lldb)에서 명령을 사용하십시오 .

일시 중지되거나 충돌 후 bt디버그 콘솔에 입력 하기 만하면 됩니다.
전체 스택 추적을 인쇄합니다.

bt 명령의 샘플 출력


기호 중단 점을 설정 한 후 제약 문제를 추적하는 데 유용한 팁입니다.
Alex Walczak

특정 스레드의 스택을 캡처하기 위해 디버그 창에서 스레드 ID를 언급 할 수도 있습니다. 예를 들어, Thread 42의 경우- "bt 42"
rivaldo4t

66

Xcode 6에서는 전체 스택 추적을 표시하는 창의 왼쪽 하단 모서리에있는 버튼을 클릭 할 수 있습니다. Xcode 6은 전체 스택 추적을 보여줍니다.


이 답변은 Xcode 11에서 여전히 최신이지만 버튼이 약간 이동되었습니다. ;)
ReinstateMonica3167040

17

Xcode 5에서는 스택 추적을 보여주는 창 하단의 슬라이더를 이동할 수 있습니다. 쳐진 트레이스가 표시되는 정도를 제어합니다.

스택 추적을 제어하는 ​​슬라이더


6
Xcode 6에서 어떻게 수행합니까? 더 이상 슬라이더가 없습니다.
progrmr

3
이 슬라이더는 XCode6에서 제거 된 것 같습니다. 누군가 XCode6에서이 작업을 수행하는 방법을 알고 있다면 당신은 나의 영웅이 될 것입니다.
Steazy

@Steazy Xcode 6-11에 대한 Gong Pengjun의 답변을 참조하십시오 (또는 나중에 11.x가 현재 현재 상태 일 수 있음)
ReinstateMonica3167040

4

breakpoint예외가 발생하기 전에 추가 할 수 있습니다 . 먼저 Breakpoint Navigator(cmd + 6)로 이동하십시오. 왼쪽 하단 모서리에서 마우스 클릭 더하기 버튼. 또는 Instruments(/ Developer / Applications / Instruments)를 사용하여 zombie objects. 참고

중단 점 검토를 추가하면 그림이 Xcode.

여기에 이미지 설명 입력

하단 사용 step overover라인 별 로그에 대한 슬라이더를 사용하여 스택 추적을 확장 할 수 있습니다 .

감사합니다 이것이 당신을 도울 수 있기를 바랍니다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.