我无法让Xcode显示Foundation.Data
的底层内存。
我正在解析Data
中作为blob传递给函数的二进制格式。在调试器中,Xcode显示如下:
我可以控制点击其中任何一个,并选择“查看内存的“数据”“等,但没有一个显示内存块我正在寻找.(我知道这是因为我print()
的前几个字节通过下标运算符data[0]
等访问.)
_representation
显示地址0x0
slice
(1)显示了内存,但没有显示我要查找的内容slice
(2)显示的内容与前一个相同lowerBound
显示的内容与前两个相同upperBound
显示了一些其他内存,但不是我要查找的内存storage
显示了地址0x0
我习惯了像C这样的语言,在C中我会有一个指针或数组。
我还尝试过在查看代码索引到数据的寄存器时逐步执行反汇编,但我不习惯ARM asm,而且似乎也找不到我正在寻找的地址。
(No,它不是0x40006000022804b0
处的内存)
预期行为
查看Data
封装的字节
特定问题或错误
当我使用上下文菜单“View Memory of ...”时,调试器显示给我的Data
的每个组件要么什么都不显示,要么显示字节,而不是我正在寻找的字节。
和重现问题所需的最短代码
这个问题与我的代码无关,而是关于如何让Xcode调试器显示对象的底层内存。
1条答案
按热度按时间shyt4zoc1#
Data
具有多个不同的后备存储策略(例如,一个用于切片,一个用于桥接到目标C,等等)0x40006000022804b0
包含一个Foundation.__DataStorage
对象。它有一个_bytes属性,表示实际的缓冲区所在的位置。它是公开的-[NSData bytes]
,您可以打印出来用于调试