error: Couldn't IRGen expression, no additiona

2019-03-12 12:30发布

问题:

I can not print debug information in my UI TESTS. Configuration: Xcode 10 and SWIFT 4.2.

When I try to print something in console I can only see an error:

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

I didn't have any problem in earlier versions of Xcode (8,9 etc), only in Xcode 10. I can not print anything, when I put breakpoint and try to print for example app po XCUIApplication() or something like that.

In the earlier version of Xcode when I write in console:

"po XCUIApplication.debugDescription()"I saw the structure of my application.

We found that the problem appears when an external framework is added to the UI Tests Target. We've created an example project with RxSwift.framework included which can be use to reproduce our issue:

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

Regards.

回答1:

I had same issue with Carthage. However while looking more closely at console I've spotted that Carthage instead of building RxSwift just downloaded pre-built binaries,

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

that in turn contribute to IRGen error. So forcing Carthage to build framework instead of downloading binary worked.

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


回答2:

The swift debugging format is a binary dump of Swift internal objects so you have to have compiled your binaries with the compiler that ships with the debugger you are using or things go badly.

I can repro the behavior you were seeing using Xcode 10.0 and the project you provided. But then I got the RxSwift sources from github and rebuilt them with the Xcode 10.0 compiler and replaced your RxSwift.framework with the one I built locally and reran the test, and the expression you had attached to the breakpoint worked correctly. Can you see if that also works for you?

The debugger should have given a better error message, if you want to file a bug with the swift bug reporter (http://bugs.swift.org) we can look at improving the error message.



回答3:

I had the same issue with Carthage - RxSwift.

Deleting files from

Carthage/Build/...

Carthage/Checkouts/

And calling carthage update in terminal resolved my issue.

Update:

We noticed this issue happens only when updating RxSwift library to version 4.3 and above. Setting version to 4.2.x works normal.