예외에 대한 내 스택 추적은 다음과 같습니다.개인 메서드에서 디버거 콘솔에서 self를 인쇄하는 방법
#0 0x049f088a in objc_exception_throw()
#1 0x05f933b5 in __NSFastEnumerationMutationHandler()
#2 0x03046e9d in -[UIView(Hierarchy) _makeSubtreePerformSelector:withObject:withObject:copySublayers:]()
#3 0x03047043 in __85-[UIView(Hierarchy) _makeSubtreePerformSelector:withObject:withObject:copySublayers:]_block_invoke()
#4 0x03046f14 in -[UIView(Hierarchy) _makeSubtreePerformSelector:withObject:withObject:copySublayers:]()
#5 0x03047043 in __85-[UIView(Hierarchy) _makeSubtreePerformSelector:withObject:withObject:copySublayers:]_block_invoke()
#6 0x03046f14 in -[UIView(Hierarchy) _makeSubtreePerformSelector:withObject:withObject:copySublayers:]()
#7 0x03046d3e in -[UIView(Hierarchy) _makeSubtreePerformSelector:withObject:]()
#8 0x03052187 in -[UIView(Internal) _addSubview:positioned:relativeTo:]()
#9 0x03045846 in -[UIView(Hierarchy) insertSubview:atIndex:]()
#10 0x02fde714 in __53-[_UINavigationParallaxTransition animateTransition:]_block_invoke()
#11 0x0304c3ef in +[UIView(Animation) performWithoutAnimation:]()
#12 0x02fddc96 in -[_UINavigationParallaxTransition animateTransition:]()
#13 0x03118e4e in -[UINavigationController _startCustomTransition:]()
#14 0x031250c7 in -[UINavigationController _startDeferredTransitionIfNeeded:]()
#15 0x03125cb9 in -[UINavigationController __viewWillLayoutSubviews]()
#16 0x0325f181 in -[UILayoutContainerView layoutSubviews]()
#17 0x03055267 in -[UIView(CALayerDelegate) layoutSublayersOfLayer:]()
#18 0x04a0281f in -[NSObject performSelector:withObject:]()
#19 0x023b12ea in -[CALayer layoutSublayers]()
#20 0x023a50d4 in CA::Layer::layout_if_needed(CA::Transaction*)()
#21 0x023a4f40 in CA::Layer::layout_and_display_if_needed(CA::Transaction*)()
#22 0x0230cae6 in CA::Context::commit_transaction(CA::Transaction*)()
#23 0x0230de71 in CA::Transaction::commit()()
#24 0x0230e544 in CA::Transaction::observer_callback(__CFRunLoopObserver*, unsigned long, void*)()
#25 0x05ecb4ce in __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__()
#26 0x05ecb41f in __CFRunLoopDoObservers()
#27 0x05ea9344 in __CFRunLoopRun()
#28 0x05ea8ac3 in CFRunLoopRunSpecific()
#29 0x05ea88db in CFRunLoopRunInMode()
#30 0x058939e2 in GSEventRunModal()
#31 0x05893809 in GSEventRun()
#32 0x02fead3b in UIApplicationMain()
#33 0x000035f8 in main at /Users/dmueller39/Projects/ios-bloomberg/Bloomberg/main.mm:18
이것을 캡처하면 디버거가 일시 중지되었습니다. 프레임 # 2에 self 값을 인쇄하려면 어떻게해야합니까? 당신을 위해
그 대답은 제가 원한 것입니다. 내가 너무 대담 할 수 있다면, 내가 읽은 기술 블로그가 무엇인지 물어볼 수 있을까? – Saltymule
lldb에서 이것은 인수 레지스터'p/x $ arg1' 등 (armv7, x86_64, arm64에서 args가 reg에 전달되는)에 대해 의사 레지스터 이름을 표시함으로써 조금 단순화됩니다. 그러나 백 트레이스의 중간에있는 스택 프레임의 경우, 함수를 분해하고 인수가 저장된 위치를 확인해야합니다 (다른 곳으로 저장 한 경우) ... 다른 함수가 호출 되 자마자 인수가 전달됩니다 레지스터는 다른 값에 대해 재사용됩니다. lldb는 그들이 갇혀 있다는 것을 알고 있기 때문에 스택 중간에 당신을 보여주지 않습니다. 당신은 실제로 func의 시작에 있어야합니다. –