【问题标题】:lldb debugger gives wrong answer?lldb 调试器给出错误的答案?
【发布时间】:2019-01-29 05:46:54
【问题描述】:

我是 Xcode 的新手,没有使用 lldb 调试工具的经验。我正在关注 Apple 的教程 here。我注意到 lldb 工具为我提供了一些关于我将鼠标悬停在上面的变量的相反信息。这是怎么发生的?

【问题讨论】:

  • 你的鼠标悬停在127 线上,它仍然是false。然后你走到128 并做了po 这已经是真的了
  • @janusbalatbat 我上传了另一个屏幕截图。变量isPresentingInAddMode 被评估为假,因此不输入第 128 行和第 129 行之间的块。 lldb 说布尔值是真的。
  • 有时 GUI 没有获得更新的值。但从断点线来看,我出乎意料地相信悬停的那个。你能在通常的 deep-cash-clean 和 xcode 重启后重现它吗?
  • @jalone:我清理了构建文件夹,删除了 DerivedData 文件夹,重新启动了 XCode 和计算机后,同样的事情发生了。

标签: ios swift xcode debugging lldb


【解决方案1】:

我有一些有趣的发现。我将它们发布在这里是为了社区,因为我没有在 SO 上看到任何类似的答案。然而,它更像是一个线索,而不是真正的“答案”本身。

在阅读this SO 答案后,我在 lldb 上玩了一些。这是我尝试过的一件事:

let v1: Int? = nil
let v2 = (v1 is String)
let v3 = (v1 is Int?)
let v4 = (v1 is Int)

然后我对它们做了ppo...

|---------|---------|----------|---------|------ ----| | | v1 | v2 | v3 | v4 | | p |无 |假 |真实 |假 | |宝 |无 |真实 |真实 |真实 | |---------|---------|----------|---------|------ ----|

我绝对可以将这个实验与我原来的情况联系起来,presentingViewController 也是 nil。看起来像打印对象描述的命令po 将显示true 到“任何可选变量is 任何类型”语句。

我仍在对此进行更多研究并寻找官方文档...

【讨论】:

  • 我无法重现您使用 Xcode 10 测试版的实验结果。如果我将您的 sn-p 作为 () -> Void 函数的主体放在 .swift 文件中,并在所有分配运行后停止,则 pop 返回一致且正确的结果。你能举一个完整的例子吗?另外,您使用的是什么版本的 Xcode?​​span>
  • @JimIngham。将代码放入单独的 ()->Void 函数后,我确实重现了相同的结果。我正在使用 XCode 9.2 和 Swift 4.0
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-29
  • 2014-11-19
  • 2020-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多