【问题标题】:error: Couldn't IRGen expression, no additional error [duplicate]错误:无法表达 IRGen,没有其他错误 [重复]
【发布时间】:2019-02-24 11:29:55
【问题描述】:

我无法在我的 UI 测试中打印调试信息。配置:Xcode 10 和 SWIFT 4.2。

当我尝试在控制台中打印某些内容时,我只能看到一个错误:

"error: Couldn't IRGen expression, no additional error" 

我在早期版本的 Xcode(8,9 等)中没有任何问题,只有在 Xcode 10 中。当我放置断点并尝试打印例如 app po XCUIApplication() 或类似的东西时,我无法打印任何东西那。

在早期版本的 Xcode 中我在控制台中编写时:

"po XCUIApplication.debugDescription()"我看到了我的应用程序的结构。

我们发现将外部框架添加到 UI 测试目标时会出现问题。我们创建了一个包含 RxSwift.framework 的示例项目,可用于重现我们的问题:

https://drive.google.com/file/d/1BlByFVNaOdDqT4ED9Jwyi1kJ99PTRQen/view?usp=sharing

问候。

【问题讨论】:

    标签: swift xcode debugging lldb xcode10


    【解决方案1】:

    我对 Carthage 也有同样的问题。然而,在更仔细地查看控制台时,我发现 Carthage 而不是构建 RxSwift 只是下载了预构建的二进制文件,

    *** Downloading RxSwift.framework binary at "Zürich"
    

    这反过来会导致 IRGen 错误。因此,强制 Carthage 构建框架而不是下载二进制文件是可行的。

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

    【讨论】:

    • carthage update --platform iOS --no-use-binaries 适合我。但是,如果您正在与其他开发人员合作,并且您正在将 carthage 构建推送到 repo,那么问题仍然会发生在其他开发人员身上,因为 RxSwift 构建是在我的计算机上构建的。而且这只发生在 RxSwift 框架中。
    【解决方案2】:

    快速调试格式是 Swift 内部对象的二进制转储,因此您必须使用您正在使用的调试器附带的编译器编译您的二进制文件,否则事情会变得很糟糕。

    我可以重现您在使用 Xcode 10.0 和您提供的项目时看到的行为。但后来我从 github 获得了 RxSwift 源代码并使用 Xcode 10.0 编译器重新构建它们,并用我在本地构建的 RxSwift.framework 替换了您的 RxSwift.framework 并重新运行测试,并且您附加到断点的表达式正常工作。你能看看这是否也适合你吗?

    调试器应该提供更好的错误消息,如果您想向 swift bug 报告器 (http://bugs.swift.org) 提交错误,我们可以考虑改进错误消息。

    【讨论】:

    • 没有帮助我:应用程序使用内部框架,在本地重建所有内容。还是一样的错误。 Xcode 10,开发目标iOS 9.0,在iOS 11.2模拟器中运行app
    • @JOM 如果您可以共享您的项目,请向bugs.swift.org 或bugreporter.apple.com 提交错误。重建一切是目前成功的必要条件,任何情况下它也不是充分条件,我们想看看。
    • 对不起,大型企业应用程序。无法共享项目,也无法创建小的独立示例:(
    【解决方案3】:

    我对 Carthage - RxSwift 也有同样的问题。

    删除文件

    迦太基/建造/...

    迦太基/结帐/

    在终端中调用 carthage update 解决了我的问题。

    更新:

    我们注意到这个问题只有在将 RxSwift 库更新到 4.3 及更高版本时才会发生。设置版本为 4.2.x 正常。

    【讨论】:

      猜你喜欢
      • 2019-07-13
      • 1970-01-01
      • 2017-08-27
      • 1970-01-01
      • 2015-07-22
      • 2018-09-01
      • 2022-01-19
      • 1970-01-01
      相关资源
      最近更新 更多