Xcode 14 Beta - LLDB构建问题

54
我在使用 iPhone 11 Pro 或 iPad Pro 作为物理设备目标时,在构建任何应用时都遇到了问题。一个带有“Hello World”的标准模板应用程序的新实例需要短暂的时间来构建和安装到手机上,但是然后应用程序会在黑屏上冻结。控制台报告如下警告信息: warning: libobjc.A.dylib 正在从进程内存中读取。这表明 LLDB 找不到此设备的磁盘共享缓存。这可能会降低调试性能。 有趣的是,如果我停止 Xcode 中的构建,这会退出设备上的应用程序,然后在设备上手动启动应用程序,一切都按预期工作,但当然没有日志记录。回退到 Xcode 13.4 后,出现了相同的问题,这表明这是 iOS 16 beta 的问题?
进一步测试表明这是调试器的问题。 如果我允许Xcode将应用程序构建和运行到我的设备之一,则应用程序将启动,然后在黑屏上冻结。 几分钟后,应用程序才进入其主 ContentView,并且控制台似乎正常工作。
有什么想法吗?谢谢。

2
作为后续。通过反馈助手程序,苹果开发人员已经解决了我的问题,让我在终端中运行以下命令来删除我的设备调试详细信息,以强制Xcode从头开始重新创建它们。rm -r ~/Library/Developer/Xcode/iOS\ DeviceSupport - tdc
8个回答

96

对于后来遇到同样问题的人(或者未来的我)- 我也有过同样的问题。

完全删除Device Support文件夹并重新打开Xcode,它会强制重新创建设备支持文件。

简而言之

rm -r ~/Library/Developer/Xcode/iOS\ DeviceSupport

接着重新打开Xcode。


11
对我没用,我们遇到了不同的问题。iOS 16 Xcode 14 Flutter,但这个可以解决问题:https://dev59.com/w1EG5IYBdhLWcg3wRIed#71115871 - hunterp
1
我尝试了这个方法,但似乎对我没有用。UI会卡住1.5分钟左右,同时我还会收到如下警告信息:warning: libobjc.A.dylib is being read from process memory. This indicates that LLDB could not find the on-disk shared cache for this device. This will likely reduce debugging performance. - Shakti
这简直救了我的命。我拒绝在第一个弹出窗口安装组件,但无法重新生成弹出窗口或实例,这困扰了我约一个月。 - ctm
3
确保在删除文件时关闭Xcode,至少这是我成功的方法。 - Thyselius
不要删除,你可以把目录暂时移动到其他地方。这是一个很好的通用建议,因为如果删除操作无效,你就无法恢复了。 - thebiggestlebowski

31

当前得票最高的答案其他问题的解决方案中的步骤合并,仅适用于我:

  1. rm -r ~/Library/Developer/Xcode/iOS\ DeviceSupport
  2. 连接设备后打开Xcode项目/工作区
  3. 等待“获取调试符号”进程完成
  4. 关闭Xcode
  5. 再次打开Xcode并尝试在设备上构建和运行

它可以工作。Xcode 14.2,iOS 16.1。 - djdance
只是等待直到“获取调试符号”过程完成而不删除任何内容,这对我有所帮助。 - Valentyna P
太棒了,谢谢。真可惜代码无法意识到我在设备上更新了iOS,并自动更新调试符号。 - Ian White
谢谢!我尝试了删除“Device Support”文件夹以及这里的步骤1-5,结果成功了。只删除文件夹是不行的。 - undefined

15

更多背景信息:

lldb使用gdb-remote协议从设备读取内存。这种方法有一个好处,就是它是一种广泛支持的协议,但速度并不非常快。因此,如果在本地主机上拥有加载到程序中的二进制文件的副本,则lldb将能够直接检查它们,从而工作得更好。

Xcode就是让这种情况发生的工具。当您插入设备并启动Xcode时,如果操作系统是Xcode之前没有见过的,则一次性复制系统二进制文件,并将它们放入~/Library/Developer/Xcode/{DeviceType} DeviceSupport/SystemVersion 。如果由于某种原因该过程失败,则lldb将不得不退而求其次,从设备读取符号信息,这会很慢 - 这就是该警告所警示的内容。

如果您删除了DeviceSupport目录的当前版本,则下次尝试进行调试时,Xcode将再次复制二进制文件。如果您遇到的错误是暂时性的,那么这样做应该可以解决问题。如果不是,最好通过Apple反馈提交报告以找出实际出了什么问题。


3

只需打开Xcode,它会要求您安装一些必需的附加组件。就这样。

这通常发生在更新Xcode或Mac OS之后。


对于那些像我一样经常使用Android Studio而很少打开Xcode的人,请注意这个简单的步骤。 - Ross Llewallyn
升级后,我还不得不断开并重新连接iPhone上的电缆才能使其正常工作。 - undefined

2
我在使用flutter和iPhone时遇到了这个问题。我通过在终端中运行flutter clean,然后运行flutter pub get解决了它,并且它起作用了。如果有人在使用flutter时遇到这个问题,请参考以上步骤。

1
更新 Xcode,然后重新打开即可解决问题。

更新对我来说没有解决问题。 - thebiggestlebowski

0

您正在使用网络连接。请取消勾选并使用电缆连接。看起来是iOS 16中的一些最近问题。

enter image description here

enter image description here


-1

如果您正在使用2个Xcode应用程序,请尝试删除一个旧的,这可能会解决问题。


请尝试在评论区发表评论,而不是在答案区,否则答案可能会被举报或标记。 - Prateek Varshney

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接