几个月来我一直在默默地处理这个问题,最后我觉得有必要在这里问。 LLDB中的"po"通常会导致以下输出:
(lldb( 错误::3:1:错误:使用未解析的标识符"inView" 在视图 ^~~~~~
我正在编写一个自定义动画视图控制器过渡。 我在animateTransition(using transitionContext:)
方法中暂停了。 inView
是在方法开头定义的局部变量。 我在下一行使用它。 我想查询它的值。 它显示在调试器的"变量视图"部分(但只是名称,没有详细信息(。
所以我认为没有理由不打印出来。
现在,在人们谈论优化之前,这是一个运行默认方案的全新单视图应用程序。 Swift 编译器的默认优化设置没有针对调试配置文件的优化。 这确实是我的项目的设置方式。
那么问题出在哪里??
即使在最低的优化级别(-Onone
(,swift编译器也比clang在-O0
对C语言所做的优化工作要多得多。 Swift 依靠优化器使其更复杂的基本模型表现良好,即使在 -Onone
时也需要完成一些工作。
调试信息丢失到优化传递的常见症状之一是无法跟踪变量的位置。 调试信息记录变量,但对于某些地址范围,无法重建其位置。 从您的描述中,听起来您遇到了这个问题。
这种症状没有一个原因,因为失败是编译器和优化器所有阶段交互的结果。 快速工程师可以看到的实例越多,他们可以修复的不良路径就越多。 因此,当您看到此内容时,请提交错误。 有关说明,请点击此处:
https://swift.org/contributing/#reporting-bugs