【问题标题】:Can't inspect Swift variables in LLDB when running on device在设备上运行时无法检查 LLDB 中的 Swift 变量
【发布时间】:2016-08-11 20:57:10
【问题描述】:

例如,如果我尝试使用po self 在 lldb 中打印一个变量,我会得到:

(lldb) po self
error: Couldn't lookup symbols:
  __TMC4skyq12BlahBlahBlah

事实上,我真的无法评估/打印来自 lldb 的任何内容:

(lldb) expression "Hello World!"
error: Couldn't lookup symbols:
  __TMC4skyq12BlahBlahBlah
(lldb) p "Hello World!"
error: Couldn't lookup symbols:
  __TMC4skyq12BlahBlahBlah

我该如何解决这个问题?我正在使用:Xcode 7.3 (7D175)。

观察

  • 这似乎只在我在物理设备上运行时发生。在模拟器上,错误不会发生。
  • 我还创建了一个空的标准项目,检查工作正常。
  • 它只发生在代码库的 Swift 部分。如果我在 obj-c 代码中有断点,则 lldb 能够从那里打印符号。

【问题讨论】:

  • 这很奇怪,因为我每天都使用po 并且它有效。在最新的 XCode 中,它甚至具有 Swift 的自动完成功能。
  • 很奇怪!我确信我已经看到它工作了,而且它确实在 obj-c 代码中工作。但我也看到它在其他时候不起作用,而且 Google 没有引导我找到解决方案,甚至对它不起作用感到烦恼,这对于这样一个基本工具来说似乎令人惊讶。
  • 可能是项目的索引有问题,是在所有项目中发生还是仅在这个项目中发生?
  • 嘿,好主意 - 我刚刚尝试重新启动。我会尝试清洁,看看是否有帮助......
  • 不行,还是不行。

标签: swift lldb


【解决方案1】:

虽然我不确定您为什么会看到这些错误,但我并不是 llvm + Swift 的最大粉丝,因为我发现它会生成长对象元数据而不是调用description 方法。

我发现 e print(<object>) 工作得更符合我对 llvm + Objective-c 的习惯

这相当于普通的 Swift print 方法; ee执行命令的 llvm 命令。

【讨论】:

  • 谢谢詹姆斯。在这种情况下,e llvm 命令给出了相同的错误。甚至像e print("Hello World!") 这样的东西也会给出错误。
猜你喜欢
  • 2017-10-02
  • 2020-02-22
  • 2021-05-21
  • 2015-06-24
  • 2014-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-18
相关资源
最近更新 更多