मैंने आईओएस टैग शामिल किया, लेकिन मैं कोर i7 मैकबुक प्रो (x86-64, दाएं?) पर सिम्युलेटर में चल रहा हूं, इसलिए मुझे लगता है कि यह असीमित है।सामान्य प्रयोजन रजिस्टर की सामग्री में क्या शामिल है?
मैं वर्तमान में फ्लोरी के वीडियो विज्ञापनों में एक क्रैश को डिबग कर रहा हूं। मेरे पास उद्देश्य-सी अपवादों पर एक ब्रेकपॉइंट सेट है। जब ब्रेकपॉइंट मारा जाता है तो मैं objc_msgSend
में हूं। कॉलस्टैक में निजी फ़्लोरी और आईओएस विधियों का मिश्रण होता है, कुछ भी सार्वजनिक नहीं है और मैंने जो भी लिखा है। 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 अंतिम निष्पादन विधि है। क्या यह मामला है?
- $ ईआईपी है जहां मैं दुर्घटनाग्रस्त हो गया। क्या वह आमतौर पर मामला है?
- $ eflags एक उदाहरण विधि का संदर्भ देता है, जहां तक मुझे पता है, इस दुर्घटना से कोई लेना देना नहीं है। वो क्या है?
- क्या कोई अन्य जानकारी है जो मैं इन रजिस्टरों से बाहर निकल सकता हूं?