【问题标题】:Xcode 10, LLDB: Couldn't IRGen expressionXcode 10,LLDB:不能 IRGen 表达式
【发布时间】:2019-03-13 23:20:57
【问题描述】:

使用 Xcode 10,当我使用断点停止我的应用程序并尝试在控制台中打印对象的内容时,我获得:

“无法表达 IRGen,没有其他错误”

但是,我可以在“变量视图”面板中看到对象的值。

我怎样才能让它评估我的表达式?

【问题讨论】:

  • 我对 Xcode 10.1 有同样的问题。可能与后台线程中的断点有关?
  • @BillChan,我不这么认为,在我的示例中,我在主线程中。
  • 你使用迦太基吗?我发现一篇文章说如果框架是不是本地构建的二进制文件。
  • 试试fr v variableName

标签: lldb xcode10 swift4.2


【解决方案1】:

在lldb 作为解决方法,您可以使用:

fr v productVersion
fr v productBuild

自 XCode 10.2 起

v productVersion
v productBuild

从当前调用堆栈帧打印局部变量类型和地址。

有关此类 lldb 功能的 Apple 文档:https://developer.apple.com/library/archive/documentation/General/Conceptual/lldb-guide/chapters/C5-Examining-The-Call-Stack.html

更新: 另一个似乎有帮助的技巧是设置

【讨论】:

  • 您能否提供更多信息,您在哪里找到它以及它的作用?
  • @milo 已添加,希望对您有所帮助。
【解决方案2】:

谢谢。 我解决了重建迦太基框架,如 imtx.me/archives/2719.html

carthage update --platform iOS --no-use-binaries

【讨论】:

  • 请在您的答案中包含解决问题的迦太基命令
  • 没有关于迦太基的消息
【解决方案3】:

我定义为构建系统:“Legacy Build System”,我将其更改为“New Build System”,然后构建项目,然后将其放回为“Legacy Build System”,它再次工作。

用于更改构建模式:文件->工作区设置...->构建系统

【讨论】:

  • 不适用于我的情况。我还添加了两个新目标。
【解决方案4】:

对于我的同事,carthage update --platform iOS --no-use-binaries 有效,但不适用于我。当我删除 Carthage 文件夹并重新运行命令时,po 命令开始工作?。我不确定它是否相关,但我在 macOS Catalina 10.15.3 上,而他在 Mojave 上。我们都有 Carthage 版本 0.34.0。

【讨论】:

    【解决方案5】:

    我的环境:Xcode 11.6 和 Xcode 12 Beta 6,carthage 0.34.0

    就我而言,我的公司希望我使用 Xcode 12 测试版构建我们的应用程序,看看有什么问题。我做到了,遇到了使迦太基瘫痪的another bug。我通过在same thread 中关注this answer 来修复它。

    然后我切换回Xcode 11.6,开始出现错误

    错误:无法使用 IRGen 表达式,没有其他错误

    变量检查器工作正常,但调试控制台没有打印或po是没用的。在我意识到这可能与迦太基有关之前,我花了一些时间在 SO 中进行搜索。然后我使用以下命令更新了所有依赖项

    carthage bootstrap --platform iOS --no-use-binaries --cache-builds 
    

    然后调试恢复正常,我可以再次使用print/po了

    【讨论】:

      猜你喜欢
      • 2017-10-14
      • 2019-07-13
      • 2013-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-23
      • 2017-07-18
      相关资源
      最近更新 更多