我无法在我的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
致谢。
答案 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上的替换框架解决了这个问题。