无法在控制台(调试区域)中使用po命令

时间:2019-04-04 11:51:41

标签: ios swift xcode debugging lldb

突然我开始随机收到此消息(但很多时候)

  

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

当我尝试在控制台中键入以下内容时:

po myObject

因此,控制台仅在上面打印消息,而不是给我一些有用的信息……如何解决此问题以及导致它的原因?

4 个答案:

答案 0 :(得分:3)

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

来自Xcode 10.2 Release Notes

  

LLDB调试器具有一个新的命令别名v,用于“框架变量”命令,以在当前堆栈框架中打印变量。因为v绕过了表达式求值器,所以v可以快很多,应该优先于p或po。 (40066460)

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

  

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

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

答案 1 :(得分:0)

看起来您正在使用swift。升级Xcode时,您会遇到这种错误,但是并没有使用新的工具集完全重建所有快速依赖项。如果在清理所有依赖项(包括所有Pod或迦太基模块等)并在本地重建它们后,仍然出现此错误,如果这是一个可以提供的项目,请使用{{3} }或http://bugs.swift.org,我们来看一下。

答案 2 :(得分:0)

使用debugprint命令代替po命令。

答案 3 :(得分:0)

@ mike-hay的回答,LLDB教程链接已更改为“ https://lldb.llvm.org/use/tutorial.html”,但是由于编辑时间太短,不允许我对其进行编辑,并且不允许对因为我名声太少而发帖...