Frage

Ich versuche, Nachrichten zu senden, die Objective-C-Objekte in gdb.

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

Ich kann nicht senden jede Nachricht.Bin ich etwas fehlt?Brauche ich wirklich die Symbole, oder etwas anderes?

War es hilfreich?

Lösung

Wenn Sie gdb außer Kraft setzen müssen und eine Nachricht an ein Objekt senden, wenn sie nicht im Stich lassen wird, können Sie perform verwenden:

(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

Wenn Sie ein Argument Verwendung withobject weitergeben müssen:

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

Andere Tipps

Ist es möglich, dass Sie $esi werfen müssen?

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

@ [John Calsbeek]

Dann wirft sie über Symbole fehlen.

(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.

Ich habe versucht, die Symbole für Foundation zu laden:

(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.

aber noch kein Glück:

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

Wie auch immer, ich glaube nicht, Gießen die Lösung für dieses Problem ist, sollten Sie nicht wissen müssen, welche Art von Objekt ist es, in der Lage sein, um Nachrichten an ihn zu senden. Das Seltsame ist, dass ich eine NSCFArray fand ich habe keine Probleme, das Senden von Nachrichten an:

(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

so dass ich denke, es gibt ein Problem mit dem Objekt war ich nachforschte ... oder so ähnlich.

Vielen Dank für Ihre Hilfe!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top