debugging 如何在Xcode中检查“Foundation.Data”字节缓冲区中包含的字节?

eh57zj3b  于 2022-11-14  发布在  其他
关注(0)|答案(1)|浏览(100)

我无法让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调试器显示对象的底层内存。

shyt4zoc

shyt4zoc1#

Data具有多个不同的后备存储策略(例如,一个用于切片,一个用于桥接到目标C,等等)
0x40006000022804b0包含一个Foundation.__DataStorage对象。它有一个_bytes属性,表示实际的缓冲区所在的位置。它是公开的-[NSData bytes],您可以打印出来用于调试

相关问题