2017-10-18 5 views
0

Ich versuche Argument Werte eines rufenden Methode zu erhalten:Wie in den Speicher lesen zu vereinfachen, wenn ich registrieren wissen Name

@selector(processEditingForTextStorage:edited:range:changeInLength:invalidatedRange:) 

Ich weiß, wie Werte gespeichert werden:

  • $ rdx - erstes Argument
  • $ rcx - zweites Argument
  • $ r8 - drittes Argument (NSRange.location 8bytes)
  • $ r9 - drittes Argument (NSR ange.length 8bytes)
  • $ rbp + 0x10 - vierte Argument (NSUInteger 8bytes)
  • $ rbp + 0x18 - fünfte Argument (NSRange.location 8bytes)
  • $ rbp + 0x20 - fünfte Argument (NSRange.length 8bytes)

Ist das korrekt?

Zweite Frage gibt es einfacher Weg, wie NSRange zu drucken, wenn ich weiß, wo ganze Zahlen gespeichert sind? So etwas wie "po * (NSUInteger *) ($ rbp + 0x20)"

ich Fehler dafür:

(lldb) po *(NSRange *)($rbp+0x18) 
error: incomplete type 'NSRange' (aka '_NSRange') where a complete type is required 
forward declaration of '_NSRange' 

(lldb) memory read --size 8 --format x --count 1 ($rbp+0x20) 
0x7fff5e348660: 0x0000000000000008 
(lldb) memory read --size 8 --format x --count 1 ($rbp+0x18) 
0x7fff5e348658: 0x000000000000000a 
(lldb) memory read --size 8 --format x --count 1 ($rsp+0x8) 
0x7fff5e348438: 0x000000000000000a 
(lldb) memory read --size 8 --format x --count 1 ($rsp+0x10) 
0x7fff5e348440: 0x0000000000000008 
+0

"po * (NSRange *) ($ rbp + 0x18)" - arbeitet in XCode 8.3.3 Ordnung. Xcode 9 Beta mag es nicht. –

Antwort

1

erforderlich Es gibt Abkürzungen für verschiedene Befehle, die GDB imitieren Befehle. Eine davon ist x (für "eXamine memory"), was eine Abkürzung für "memory read" ist. Sie können einen Schrägstrich und Formatbezeichner hinzufügen, um ein bestimmtes Format zu verwenden. Zum Beispiel formatiert x/xg einen 8-Byte-Wert in hexadezimal. Das Argument ist ein Ausdruck für die zu untersuchende Adresse.

So:

x/xg $rsp+0x10 
+0

Funktioniert! Danke .. –

+0

Irgendeine Eingabe für Argumente aufzurufen? –

+0

Sorry, ich verstehe die Frage nicht. Meinst du, hast du die richtigen Ausdrücke für die verschiedenen Argumente? Ja, ich glaube, das ist richtig. –

Verwandte Themen