Ho incluso il tag iOS, ma sto eseguendo il simulatore su un Core i7 MacBook Pro (x86-64, giusto?), Quindi penso che sia irrilevante.Cosa contengono i contenuti dei registri di uso generale?
Attualmente eseguo il debug di un arresto anomalo negli annunci video di Flurry. Ho un punto di interruzione impostato sulle eccezioni Objective-C. Quando viene colpito il punto di interruzione, sono a objc_msgSend
. Il callstack contiene un mix di metodi Flurry e iOS privati, niente di pubblico e niente di ciò che ho scritto. Chiamata register read
dalle objc_msgSend
uscite dello stack di trama che segue:
(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
ho alcune domande su questa uscita.
- Ho ipotizzato $ ebx contiene il selettore che ha causato l'arresto anomalo e $ edi è l'ultimo metodo di esecuzione. È questo il caso?
- $ eip è dove sono andato in crash. Di solito è così?
- $ eflags fa riferimento a un metodo di istanza che, per quanto ne so, non ha nulla a che fare con questo arresto anomalo. Cos'è quello?
- C'è qualche altra informazione che posso fare su questi registri?