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

时间:2018-09-20 07:57:08

标签: swift xcode debugging lldb xcode10

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

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

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

在早期版本的Xcode(8,9等)中,我没有任何问题,仅在Xcode 10中没有问题。当我放置断点并尝试打印示例应用程序po XCUIApplication()或这样的事情。

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

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

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

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

致谢。

4 个答案:

答案 0 :(得分:14)

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

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

继而导致IRGen错误。因此,迫使迦太基构建框架而不是下载二进制文件是可行的。

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

答案 1 :(得分:4)

swift调试格式是Swift内部对象的二进制转储,因此您必须使用正在使用的调试器附带的编译器来编译二进制文件,否则会出现问题。

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

调试器应该给出更好的错误消息,如果您想通过快速的错误报告器(http://bugs.swift.org)提交错误,我们可以着眼于改善错误消息。

答案 2 :(得分:2)

我在迦太基-RxSwift中遇到了同样的问题。

删除文件

迦太基/建造/...

迦太基/结帐/

然后在终端中致电迦太基更新解决了我的问题。

更新

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

答案 3 :(得分:0)

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