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

问题描述 投票:18回答:4

我无法在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()"I看到了我申请的结构。

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

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

问候。

swift xcode debugging lldb xcode10
4个回答
14
投票

我和迦太基有同样的问题。然而,在仔细观察控制台时,我发现Carthage而不是构建RxSwift只是下载了预先构建的二进制文件,

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

这反过来又导致IRGen错误。因此迫使Carthage构建框架而不是下载二进制工作。

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

4
投票

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

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

调试器应该给出一个更好的错误消息,如果你想向swift bug报告器(http://bugs.swift.org)提交bug,我们可以看一下改进错误信息。


2
投票

我和Carthage有同样的问题 - RxSwift。

从中删除文件

迦太基/生成/ ...

迦太基/签出/

并在终端中调用carthage更新解决了我的问题。

更新:

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


0
投票

检查框架是否正确连接。就我而言,POD上的替换框架解决了这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.