Xcode启动时崩溃

15

我正在为iOS开发一个应用程序,但在我的Mac重新启动时,应用程序没有做任何更改。但每次重新启动后,Xcode都会崩溃。

不知道这是否重要,但我的Spotlight无法找到任何应用程序,而且当我打开Finder并使用快捷键cmd + shift + H时,我看到一个白色的窗口。

Xcode不再启动并抛出此错误:

Process:               Xcode [1346]
Path:                  /Applications/Xcode.app/Contents/MacOS/Xcode
Identifier:            com.apple.dt.Xcode
Version:               7.2 (9548)
Build Info:            IDEFrameworks-9548000000000000~7
App Item ID:           497799835
App External ID:       814662604
Code Type:             X86-64 (Native)
Parent Process:        ??? [1]
Responsible:           Xcode [1346]

Date/Time:             2015-12-24 11:01:44.753 +0100
OS Version:            Mac OS X 10.11.2 (15C50)
Report Version:        11


Time Awake Since Boot: 4000 seconds

System Integrity Protection: enabled

Crashed Thread:        4  Dispatch queue: DVTFilePathEventWatcher - event queue

Exception Type:        EXC_BAD_ACCESS (SIGSEGV)
Exception Codes:       KERN_INVALID_ADDRESS at 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

VM Regions Near 0:
--> 
    __TEXT                 0000000108a5a000-0000000108a5e000 [   16K] r-x/rwx SM=COW  /Applications/Xcode.app/Contents/MacOS/Xcode

Application Specific Information:
ProductBuildVersion: 7C68

Thread 0:: Dispatch queue: DVTFilePath cache derivation lock for key DVTFilePathKey_SortedDirectoryContents
0   libobjc.A.dylib                 0x00007fff8df27aa0 search_method_list(method_list_t const*, objc_selector*) + 2
1   libobjc.A.dylib                 0x00007fff8df28d76 lookUpImpOrForward + 413
2   libobjc.A.dylib                 0x00007fff8df22591 objc_msgSend + 209
3   com.apple.dt.DVTFoundation      0x0000000108a741f8 -[DVTFileSystemVNode addCachedEntriesFromDictionary:] + 215
4   com.apple.dt.DVTFoundation      0x0000000108bd2e2d __33-[DVTFilePath cachedValueForKey:]_block_invoke549 + 245
5   libdispatch.dylib               0x00007fff9fcbd33f _dispatch_client_callout + 8
6   libdispatch.dylib               0x00007fff9fcbe926 _dispatch_barrier_sync_f_invoke + 74
7   com.apple.dt.DVTFoundation      0x0000000108cd1005 DVTDispatchBarrierSync + 62
8   com.apple.dt.DVTFoundation      0x0000000108a69627 -[DVTDispatchLock performLockedBlock:] + 116
9   com.apple.dt.DVTFoundation      0x0000000108a715b0 -[DVTFilePath cachedValueForKey:] + 1802
10  com.apple.dt.DVTFoundation      0x0000000108a70afc -[DVTToolchainRegistry scanSearchPathAndRegisterToolchains:] + 563
11  com.apple.dt.IDEFoundation      0x00000001097d1a66 IDEInitialize + 655
12  com.apple.dt.IDEKit             0x0000000109ecdf7c -[IDEApplicationController applicationWillFinishLaunching:] + 708
13  com.apple.CoreFoundation        0x00007fffa18fa70c __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 12
14  com.apple.CoreFoundation        0x00007fffa18fa67f ___CFXRegistrationPost_block_invoke + 63
15  com.apple.CoreFoundation        0x00007fffa18f9d47 _CFXRegistrationPost + 407
16  com.apple.CoreFoundation        0x00007fffa18f9ab2 ___CFXNotificationPost_block_invoke + 50
17  com.apple.CoreFoundation        0x00007fffa18f3d42 -[_CFXNotificationRegistrar find:object:observer:enumerator:] + 1922
18  com.apple.CoreFoundation        0x00007fffa17e2145 _CFXNotificationPost + 693
19  com.apple.Foundation            0x00007fff9ef36921 -[NSNotificationCenter postNotificationName:object:userInfo:] + 66
20  com.apple.dt.DVTFoundation      0x0000000108c6cf55 -[NSNotificationCenter(DVTNSNotificationCenterAdditions) _dvt_postNotificationName:object:userInfo:] + 698
21  com.apple.AppKit                0x00007fff9db412c2 -[NSApplication finishLaunching] + 354
22  com.apple.dt.DVTKit             0x0000000109275f62 -[DVTApplication finishLaunching] + 149
23  com.apple.AppKit                0x00007fff9db40e05 -[NSApplication run] + 231
24  com.apple.AppKit                0x00007fff9dac3520 NSApplicationMain + 1176
25  libdyld.dylib                   0x00007fff9a8605ad start + 1

这可能是由于权限冲突引起的问题吗?

回答:

当我将我的OSX驱动器权限更改为每个人都可以写和读取时,一切正常。但我知道这只是一个临时解决办法,所以我决定重新安装我的MAC,然后一切都好了。


请将您的“答案”部分作为回答发布,而不是添加到问题底部。 - pkamb
5个回答

33

在终端中运行以下命令来删除 ~/Library/Developer/Xcode/DerivedData:

rm -r ~/Library/Developer/XCode/DerivedData

如果那样做不起作用,考虑到目前所提供的信息,我建议删除并重新安装Xcode。


你的操作系统是否更新到最新版本,是否是真实(非虚拟)机器,是否有足够的硬盘空间,并且满足运行Xcode的最低要求? - Jeremie D
Xcode运行了3个月没有问题。 - Bernhard Miehl
2
此外,删除~/Library/Saved Application State/com.apple.dt.Xcode.savedState。 - Jeremie D
你能在不打开项目的情况下打开Xcode吗?也许你的项目已经损坏了...(你能打开另一个项目吗?)或者开始一个新项目。 - Jeremie D
1
你好!感谢您的帮助!我刚刚重新安装了我的Mac,并从Time Machine中恢复了所有内容,现在一切都正常工作。答案是:我的Mac用户权限出了问题。 - Bernhard Miehl
显示剩余4条评论

31

如果删除~/Library/Developer/Xcode/DerivedData没有起效,可以尝试以下步骤来删除xcuserdata:

  • 打开Finder窗口并导航到你的项目
  • 右键点击.xcodeproj或.xcworkspace文件
  • 选择显示包内容
  • 出现一个新窗口
  • 删除名为xcuserdata的文件夹

1
在 Xcode 启动失败的情况下,这是应该尝试的第一件事。 - Shobhit C
添加了断点。Xcode出现故障。在xcuserdata文件夹中删除断点数据。Xcode已修复。我是否误解了断点? - Tasik
只有当我像@Sunil Targe所说的那样从“xcodeproj”和“xcworkspace”中都删除了文件夹时,这才对我起作用。 - Ryno C.

1

我曾经遇到这样一种情况,选择了一个非常大的文件,导致Xcode在解析时崩溃。然后当我重新启动它时,它不知怎么地被设置为在启动时加载该文件。唯一的方法是将它尝试在启动时加载的文件临时重命名,以便它可以加载空文件。


1
我建议从你的.xcodeproj.xcworkspace文件(使用Show Package Contents打开)中删除xcuserdata:文件夹,然后再尝试一次。希望这样可以解决问题。

0

确保您的SPM软件包/依赖项没有任何问题。

这只是另一个建议。我刚刚花了一些时间在一个相当流行的开源项目上进行调试。

当我更新SPM软件包时,我的Xcode首先崩溃了,因此我相当确定这是该软件包中未来提交之一或SPM错误的问题。我遵循奥卡姆剃刀原则,所以我开始查看提交中的更改。

经过一段时间,我在contents.xcplayground中找到了一个重复的Swift Playground页面声明。我删除了那一行,推送了PR,然后一切正常。

要能够重新打开项目:

  1. 使用您选择的代码编辑器(例如vi、nano、emacs、atom、code)打开project.pbxproj
  2. /* Begin XCRemoteSwiftPackageReference section *//* Begin XCSwiftPackageProductDependency section */部分中删除有问题的软件包。
  3. 保存文件,然后Xcode现在应该可以打开。

同样,如果您的Xcode在打开项目时立即崩溃(并且您最近更新/自动更新了SPM软件包),请检查您的软件包。


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