swift - 如何在 Xcode 中检查 "Foundation.Data"字节缓冲区中包含的字节?

标签 swift xcode macos debugging foundation

我无法让 Xcode 显示 Foundation.Data 的底层内存.

我正在解析作为 Data 中的 blob 传递给我的函数的二进制格式。在调试器中 Xcode 向我展示了这个:

"data" as I can view it in the debug panel

我可以按住 Control 键单击其中任何一个,然后选择“查看“数据”内存”等,但它们都没有显示我正在查找的内存块。 (我知道这一点是因为我 print() 通过下标运算符 data[0] 等访问了前几个字节。)

  • _representation 显示地址 0x0
  • slice (1) 显示内存,但不是我要查找的内容
  • slice (2) 显示与上一个相同的内容
  • lowerBound 显示与前两个相同的内容
  • upperBound 显示了一些其他内存,而不是我正在寻找的内容
  • 存储显示地址0x0

我习惯了更像 C 的语言,其中有指针或数组。

我还尝试过单步执行反汇编,同时查看代码索引到数据的寄存器,但我不习惯 ARM asm,并且似乎也找不到我正在寻找的地址.

(不,这不是 0x40006000022804b0 处的内存)


期望的行为

查看Data封装的字节

具体问题或错误

当我使用上下文菜单“查看...的内存”时,调试器向我提供的数据的每个组件除了我正在寻找的内容之外什么都没有显示或显示字节

以及重现问题所需的最短代码

这个问题与我的代码无关。这是关于如何让 Xcode 调试器向我显示对象的底层内存。

最佳答案

基于 Alexander 的评论和 hippietrail , message.payload 的类型为 Data:

  • 转换数据表达式,即message.payloadNSData
  • 从中获取bytes属性
  • 右键单击表达式,选择“打印 (message.payload as NSData).bytes 的描述”
  • 复制打印的十六进制地址
  • 调试->调试工作流程->查看内存
  • 将复制的地址粘贴到“地址”文本框中,然后按回车键

关于swift - 如何在 Xcode 中检查 "Foundation.Data"字节缓冲区中包含的字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73428197/

相关文章:

ios - 将图像旋转 180 度

iphone - 在 Adob​​e Air 的 iOS native 扩展中访问 ViewController

objective-c - (OSX/Cocoa) 如何为主窗口设置 Controller

macos - Mac Pro 64 位寻址内核

java - Swing MacBook 无效显示模式

ios - 根据唯一属性 ID 快速添加或更新项目数组

ios - 从 'AppDelegate' 到 'UNUserNotificationCenterDelegate' 的条件转换总是成功( flutter )

ios - 添加 subview 并以编程方式使用约束定位它

xcode - Swift 缺少 tabbaritem 图像

ios - 拥有多个(相同分辨率)iOS 模拟器有什么意义?