【问题标题】:Unable to use po command in console (debug area)无法在控制台中使用 po 命令(调试区域)
【发布时间】:2026-02-07 07:30:01
【问题描述】:

突然间,我开始随机收到此消息(但非常频繁)

表达式产生错误:警告: /var/folders/53/0z4yfqt16tvbcn0z7f2385n80000gn/T/expr3-d271e2..swift:3:9: 警告:变量“$__lldb_error_result”的初始化从未发生过 用过的;考虑替换为“_”的赋值或删除它 变量 $__lldb_error_result = __lldb_tmp_error ~~~~^~~~~~~~~~~~~~~~~~~~~~~ _

当我尝试在控制台中输入这样的内容时:

po myObject

所以,控制台只打印上面的消息,而不是给我一些有用的东西……如何解决这个问题,是什么原因造成的?

【问题讨论】:

  • 我敢打赌你使用的是 Xcode 10.2。调试总是很糟糕,而且速度非常慢,我不明白为什么他们不能制作一个甚至接近 IntelliJ 的调试器,一切都运行得很快。使用 Xcode 调试/编程真是令人沮丧
  • 您好!是的,我在 10.2 (10E125) @J.Doe :)
  • 我认为我们无能为力,期待等待,等待和更多等待......希望他们有一天能想出更好的 Xcode
  • @J.Doe 我希望如此。以前版本的 Xcode 不是这种情况(至少对我来说不是)。
  • 调试器控制台有一个新的帧变量命令别名“v”,它比“p”或“po”快:我刚刚在10.2 版中的新功能中看到它/跨度>

标签: ios swift xcode debugging lldb


【解决方案1】:

lldb 在 Xcode 10.2 中已更改。 Apple 建议使用“p”或最近的“v”来查看变量的值。

来自Xcode 10.2 Release Notes

LLDB 调试器有一个新的命令别名 v,用于“帧变量”命令以打印当前堆栈帧中的变量。因为它绕过了表达式求值器,所以 v 可以快得多,并且应该比 p 或 po 更受欢迎。 (40066460)

在名为检查堆栈帧状态的部分中的LLDB Tutorial 中也有很好的信息。

frame variable 命令还会对变量执行“对象打印”操作(目前我们只支持 ObjC 打印,使用对象的“description”方法。通过将 -o 标志传递给 frame 变量来打开它:

(lldb) frame variable -o self 
(SKTGraphicView *) self = 0x0000000100208b40 
<SKTGraphicView: 0x100208b40>

【讨论】:

  • 也就是说,伙计……我想念 gdb 和 po 在旧版本的 Xcode 中的工作情况。
  • 'v' 一次对我没有用,它总是说它在当前视图框架中找不到任何东西或类似的东西。不明白为什么他们不能构建一个工作快速的调试器。
  • @J.Doe 它仅适用于局部变量和参数(如果它是调试版本)(在此推理下,self 也是此处的“隐藏”参数)。
【解决方案2】:

看起来您正在使用 swift。当你升级你的 Xcode 但没有用新的工具集完全重建你所有的 swift 依赖项时,你可能会遇到这种错误。如果在您清理了所有依赖项(包括任何 Pod 或 Carthage 模块等)并在本地重新构建它们之后,您仍然会收到此错误,如果这是一个您可以提供的项目,请使用 http://bugs.swift.org 或提交错误http://bugreporter.apple.com,我们来看看。

【讨论】:

    【解决方案3】:

    使用 debugprint 命令代替 po 命令。

    【讨论】:

      最近更新 更多