gpt4 book ai didi

Swift Debugger 间歇性地无法打印局部变量的描述

转载 作者:搜寻专家 更新时间:2023-11-01 06:33:49 24 4
gpt4 key购买 nike

几个月来我一直在默默地处理这个问题,最后我觉得有必要在这里问一下。 lldb 中的“po”通常会产生以下输出:

(lldb) error: :3:1: error: use of unresolved identifier 'inView' inView ^~~~~~

我正在编写自定义动画 View Controller 转换。我暂停在 animateTransition(using transitionContext:) 方法中。 inView 是在方法开始处定义的局部变量。我在下一行使用它。我想查询它的值。它显示在调试器的“变量 View ”部分(但只有名称,没有详细信息)。

所以我看不出为什么不打印出来。

现在,在人们谈论优化之前,这是一个运行默认方案的全新单 View 应用程序。 Swift 编译器的默认优化设置没有对调试配置文件进行优化。这确实是我的项目的设置方式。

那么问题是什么??

最佳答案

即使在最低优化级别 (-Onone),swift 编译器也比 clang 在 -O0 为 C 语言所做的优化工作多得多。 Swift 依靠优化器使其更复杂的基本模型表现良好,并且即使在 -Onone 也需要做一些这样的工作。

调试信息因优化过程而丢失的常见症状之一是无法跟踪变量的位置。调试信息记录变量,但对于某些地址范围无法重建其位置。从您的描述来看,您似乎遇到了这个问题。

此症状没有任何原因,因为失败是编译器和优化器所有阶段相互作用的结果。 Swift 工程师看到的这种情况越多,他们可以修复的不良路径就越多。所以当你看到这个时请提交错误。相关说明在这里:

https://swift.org/contributing/#reporting-bugs

关于Swift Debugger 间歇性地无法打印局部变量的描述,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44056191/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com