控制台中 lldb 中的 Xcode12 po 命令在范围内找不到变量

Sha*_*n D 11 xcode ios lldb swift xcode12

自从我更新到 Xcode 12 以来,我一直无法在使用 lldb 进行调试时在控制台中打印出变量。

print()按预期直接在 Swift 代码中使用语句输出到控制台。

控制台中的命令po "hi"如预期的那样向控制台输出“hi”。

po <variable_name>相反,尝试运行时总是输出以下行:

error: <EXPR>:3:1: error: cannot find 'variable_name' in scope
Run Code Online (Sandbox Code Playgroud)

而不是预期变量的值。

我采取的步骤

  1. 将这些行添加到 Swift 代码中

    let example = "hi"
    print(example)
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将断点放在第二行,即带有print()语句的那一行

  3. 运行代码,等待断点命中

  4. 尝试po example在调试控制台中运行

预期结果

它应该"hi"在控制台中打印

实际结果

它打印此错误行

error: <EXPR>:3:1: error: cannot find 'example' in scope
Run Code Online (Sandbox Code Playgroud)

在模拟器或设备上运行时也是如此。我试过激活控制台,然后重新启动 Xcode。

我已经尝试在 Xcode12 中创建一个新项目并且运行良好,我使用以前版本的 Xcode 创建的其他旧项目在 Xcode 12 中运行良好。

我已经尝试在其他项目和新创建的项目中面对 Build 设置,似乎没有任何问题:优化设置None为调试构建配置应有的设置,并且运行方案设置为启动调试构建配置。

问题还可能出在哪里?

Cri*_*ito 6

我也遇到了这个问题,构建设置中的所有内容都设置正确,我遇到了与问题中相同的情况。

对我来说,在将所有 SPM 依赖项移回 CocoaPods 后,问题就解决了,但这并不是灵丹妙药,因为我还有其他项目,其中一些依赖项位于 CocoaPods 上,一些依赖项位于 SPM 上,并且这些项目工作得很好。

不过,有用的是,为了找到这个解决方案,我检查了较旧的提交,直到找到一个可用的提交,然后尝试恢复自该提交以来发生更改的内容。这应该有助于在每个特定情况下找到原因。

这个问题非常难以预测,如果您遇到这个问题,我认为值得向 Apple 提交反馈(如果可以的话),并将您的项目附加到反馈中。


小智 1

您可以在构建设置中将优化级别更改为“无”值。它对我有用。在此输入图像描述

  • 我在关闭优化的情况下进行开发,所以对我来说,这不是问题。我确信这是某种损坏,因为它在干净的构建后工作正常,但在稍后的某个时刻它会失败。 (2认同)