إرسال رسائل إلى الكائنات أثناء تصحيح الهدف-C في جدب ، دون رموز

StackOverflow https://stackoverflow.com/questions/56472

سؤال

أحاول إرسال رسائل إلى الهدف-C الكائنات في جدب.

(gdb) p $esi
$2 = (void *) 0x1268160
(gdb) po $esi
<NSArray: 0x1359c0>
(gdb) po [$esi count]
Target does not respond to this message selector.

لا أستطيع إرسال أي رسالة إلى ذلك.أنا في عداد المفقودين شيئا ؟ هل أنا حقا في حاجة إلى رموز ، أو أي شيء آخر ؟

هل كانت مفيدة؟

المحلول

إذا يجب تجاوز gdb وإرسال رسالة إلى كائن عندما لا تسمح لك ، يمكنك استخدام performSelector:

(gdb) print (int)[receivedData count]
Target does not respond to this message selector.

(gdb) print (int)[receivedData performSelector:@selector(count) ]
2008-09-15 00:46:35.854 Executable[1008:20b] *** -[NSConcreteMutableData count]:
unrecognized selector sent to instance 0x105f2e0

إذا كنت بحاجة إلى تمرير وسيطة استخدام withObject:

(gdb) print (int)[receivedData performSelector:@selector(count) withObject:myObject ]

نصائح أخرى

هل من الممكن أن تحتاج إلى الزهر $esi?

p (NSUInteger)[(NSArray *)$esi count]

@[جون Calsbeek]

ثم يشكو الرموز المفقودة.

(gdb) p (NSUInteger)[(NSObject*)$esi retainCount]
No symbol table is loaded.  Use the "file" command.
(gdb) p [(NSArray *)$esi count]
No symbol "NSArray" in current context.

حاولت تحميل رموز المؤسسة:

(gdb) add-symbol-file /System/Library/Frameworks/Foundation.framework/Foundation 
add symbol table from file "/System/Library/Frameworks/Foundation.framework/Foundation"? (y or n) y
Reading symbols from /System/Library/Frameworks/Foundation.framework/Foundation...done.

ولكن لا يزال لا حظ:

(gdb) p [(NSArray *)$esi count]
No symbol "NSArray" in current context.

على أي حال, أنا لا أعتقد الصب هو الحل لهذه المشكلة لا يجب أن تعرف ما هو نوع من الكائن هو أن تكون قادرة على إرسال رسائل إلى ذلك.الشيء الغريب هو أنني وجدت NSCFArray ليس لدي أي مشاكل في إرسال الرسائل إلى:

(gdb) p $eax
$11 = 367589056
(gdb) po $eax
<NSCFArray 0x15e8f6c0>(
    file://localhost/Users/ask/Documents/composing-fractals.pdf
)

(gdb) p (int)[$eax retainCount]
$12 = 1

لذا أعتقد أن هناك مشكلة مع كائن كان التحقيق...أو شيء من هذا.

شكرا على مساعدتكم!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top