iOS 태그가 포함되어 있지만 코어 i7 MacBook Pro (x86-64, 오른쪽?)의 시뮬레이터에서 실행 중이므로 중요하지 않습니다.범용 레지스터의 내용에는 무엇이 들어 있습니까?
현재 Flurry의 동영상 광고에서 크래시를 디버깅하고 있습니다. Objective-C 예외에 설정된 중단 점이 있습니다. 중단 점에 도달하면 objc_msgSend
에 있습니다. 콜 스택에는 개인 Flurry 및 iOS 메소드가 포함되어 있으며 공개 된 것은 없으며 필자가 작성한 것도 없습니다. 다음은 objc_msgSend
스택 프레임 출력에서 register read
를 호출 :
(lldb) register read
General Purpose Registers:
eax = 0x1ac082d0
ebx = 0x009600b5 "spaceWillDismiss:interstitial:"
ecx = 0x03e2cddb "makeKeyAndVisible"
edx = 0x0000003f
edi = 0x0097c6f3 "removeWindow"
esi = 0x00781e65 App`-[FlurryAdViewController removeWindow] + 12
ebp = 0xbfffd608
esp = 0xbfffd5e8
ss = 0x00000023
eflags = 0x00010202 App`-[FeedTableCell setupVisibleCommentAndLike] + 1778 at FeedTableCell.m:424
eip = 0x049bd09b libobjc.A.dylib`objc_msgSend + 15
cs = 0x0000001b
ds = 0x00000023
es = 0x00000023
fs = 0x00000000
gs = 0x0000000f
나는이 출력에 대한 몇 가지 질문 있어요.
- 나는 $ ebx에 크래시를 일으킨 선택기가 있고 $ edi가 마지막 실행 방법이라고 가정했습니다. 그럴까요?
- $ eip은 내가 추락 한 곳입니다. 대개 그런 경우입니까?
- $ eflags는 내가 아는 한이 충돌과 관련이없는 인스턴스 메서드를 참조합니다. 그게 뭐야?
- 이 레지스터에서 캐어 수있는 다른 정보가 있습니까?