抱歉了,发了一个贴索性就再发一个把近日的问题都咨询一下,不是刷楼。
在lldb动态调试中,我有时会修改一些memory中的数据来观察输入输出的变化。一般的输入输出都可以看到十六进制,可以用memory write直接修改,但是有的比如:
r0中的数据格式是NSConcreteData,但是我打印出了r0地址中的数据并没有发现po (char *)$r0 出来的数据,请问这个数据是存在哪里呢?基本上能看过的地方我都找过一遍了,并没有发现有可以的数据格式。这样我就无法更改这个数据了。
抱歉了,发了一个贴索性就再发一个把近日的问题都咨询一下,不是刷楼。
在lldb动态调试中,我有时会修改一些memory中的数据来观察输入输出的变化。一般的输入输出都可以看到十六进制,可以用memory write直接修改,但是有的比如:
r0中的数据格式是NSConcreteData,但是我打印出了r0地址中的数据并没有发现po (char *)$r0 出来的数据,请问这个数据是存在哪里呢?基本上能看过的地方我都找过一遍了,并没有发现有可以的数据格式。这样我就无法更改这个数据了。
你需要了解 NSDate内部结构
$r0是一个NSData指针,通过void* $addr = (void*)[(NSData*)$r0 bytes]拿到数据地址,x/20 $addr
很好的解决了问题,回答的很详细,谢谢你