我想獲得一個調用方法的參數值:如何簡化存儲器讀取,如果我知道註冊的名字
@selector(processEditingForTextStorage:edited:range:changeInLength:invalidatedRange:)
我知道價值是如何存儲:
- $ RDX - 第一個參數
- $ RCX - 第二個參數
- $ R8 - 第三個參數(NSRange.location 8個字節)
- $ R9 - 第三個參數(NSR ange.length 8個字節)
- $ RBP + 0×10 - 第四個參數(NSUInteger 8個字節)
- $ RBP +爲0x18 - 第五個參數(NSRange.location 8個字節)
- $ RBP + 0×20 - 第五個參數(NSRange.length 8個字節)
這是正確的嗎?
第二個問題是有更簡單的方法如何打印NSRange如果我知道整數存儲在哪裏?像 「PO *(NSUInteger *)($ RBP + 0×20)」
我得到錯誤的:需要
(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
「PO *(NSRange *)($ RBP +爲0x18)」 - 工程XCode中8.3.3的罰款。 Xcode 9測試版不喜歡它。 –