Xcode启动时崩溃,可能是由于打开的项目过多。

7
我刚刚购买了一台新的Mac,并下载了Xcode,所以一切都是全新的。第一次打开Xcode时,我不小心告诉它打开我的src/文件夹而不是/src/myLatestProject,所以我猜测Xcode会尝试打开我src/目录中的每个项目(数百个)。它在旋转几秒钟后崩溃了。现在的问题是Xcode似乎记住了我想要在应用程序启动时打开大量的项目,或者正在尝试解析数百个git存储库,我被困在了无法打开/旋转/崩溃的地狱中。如何重置Xcode的偏好设置,使其不会试图打开我电脑上的每一行源代码呢?
编辑:我已经确认它只会在我的账户上崩溃。如果我创建一个测试用户并打开Xcode,一切正常。
 Application Specific Information:
ProductBuildVersion: 5A3005
ASSERTION FAILURE in /SourceCache/IDEXcode3ProjectSupport/IDEXcode3ProjectSupport-3575/Xcode3Sources/XcodeIDE/Frameworks/DevToolsBase/pbxcore/Xcode3Model/Xcode3OCUnitTestableDataSource.m:191
Details:  ([_indexableIdsToTestableTokens objectForKey:indexableIdentifier]) should be nil, but it is <Xcode3OCUnitTestableDataSourceToken: 0x7fe73b531ae0>
Object:   <Xcode3OCUnitTestableDataSource: 0x7fe7359c79f0>
Method:   -setTestableToken:indexableIdentifier:
Thread:   <NSThread: 0x7fe732415570>{name = (null), num = 1}
Hints:   None
Backtrace:
  0  0x0000000109575ea8 -[IDEAssertionHandler handleFailureInMethod:object:fileName:lineNumber:messageFormat:arguments:] (in IDEKit)
  1  0x00000001082fc7a5 _DVTAssertionHandler (in DVTFoundation)
  2  0x00000001082fcad4 _DVTAssertionFailureHandler (in DVTFoundation)
  3  0x000000010e8ef3ca -[Xcode3OCUnitTestableDataSource setTestableToken:indexableIdentifier:] (in DevToolsCore)
  4  0x000000010e8f2261 -[Xcode3OCUnitTestableDataSourceToken _initWithDataSource:indexableIdentifier:callbackBlock:] (in DevToolsCore)
  5  0x000000010e8ef87d +[Xcode3OCUnitTestableDataSource testableDataSourceTokenForWorkspace:indexableIdentifier:callbackBlock:] (in DevToolsCore)
  6  0x000000010ea0a464 -[Xcode3OCUnitTestable initWithTarget:] (in DevToolsCore)
  7  0x000000010e9d7b69 -[Xcode3Project _updateTestablesForTargetProxies:] (in DevToolsCore)
  8  0x000000010e9d074d -[Xcode3Project syncTargetProxiesWithProjectTargets] (in DevToolsCore)
  9  0x000000010830e618 -[NSObject(DVTObservingConvenience) _dvt_newObserverForKeyPath:options:owner:withHandlerBlock:] (in DVTFoundation)
 10  0x000000010828e5d3 -[NSObject(DVTObservingConvenience) dvt_newObserverForKeyPath:options:withHandlerBlock:] (in DVTFoundation)
 11  0x000000010e9d1815 -[Xcode3Project initWithFilePath:extension:workspace:error:] (in DevToolsCore)
 12  0x0000000108d899ef __73+[IDEContainer retainedContainerAtFilePath:fileDataType:workspace:error:]_block_invoke_2 (in IDEFoundation)
 13  0x00007fff91d9d2ad _dispatch_client_callout (in libdispatch.dylib)
 14  0x00007fff91d9e166 _dispatch_barrier_sync_f_invoke (in libdispatch.dylib)
 15  0x000000010833a0ec DVTSyncPerformBlock (in DVTFoundation)
 16  0x000000010825dfe3 -[DVTDispatchLock performLockedBlock:] (in DVTFoundation)
 17  0x0000000108d893f5 __73+[IDEContainer retainedContainerAtFilePath:fileDataType:workspace:error:]_block_invoke (in IDEFoundation)
 18  0x000000010830f2ed -[DVTModelObjectGraph performBlockCoalescingModelChanges:] (in DVTFoundation)
 19  0x0000000108cc9579 +[IDEContainer retainedContainerAtFilePath:fileDataType:workspace:error:] (in IDEFoundation)
 20  0x0000000108d9eb40 -[IDEFileReference _recalculateReferencedContainer] (in IDEFoundation)
 21  0x0000000108cdcf48 -[IDEFileReference referencedContainer] (in IDEFoundation)
 22  0x0000000108ce4200 -[IDEContainerQuery _traverseContainerGraphObject:forDeletion:checkedContainers:insertedMatches:deletedMatches:] (in IDEFoundation)
 23  0x0000000108ce617b -[IDEContainerQuery _traverseContainerGraphObjects:forDeletion:insertedMatches:deletedMatches:] (in IDEFoundation)
 24  0x0000000108ce5ec4 -[IDEContainerQuery _objectsDidChange:] (in IDEFoundation)
 25  0x00007fff8d6eefcc __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ (in CoreFoundation)
 26  0x00007fff8d5e2c5d _CFXNotificationPost (in CoreFoundation)
 27  0x00007fff8a3c14aa -[NSNotificationCenter postNotificationName:object:userInfo:] (in Foundation)
 28  0x00000001082a7085 -[DVTModelObjectGraph _coalescingTick] (in DVTFoundation)
 29  0x0000000108cd1912 -[IDEGroup _setSubitems:] (in IDEFoundation)
 30  0x0000000108cdee30 -[IDEFolder _updateSubitemsWithFileNames:] (in IDEFoundation)
 31  0x0000000108d8eedb __32-[IDEFolder _filePathDidChange:]_block_invoke94 (in IDEFoundation)
 32  0x0000000108339fdc __DVTAsyncPerformBlock_block_invoke (in DVTFoundation)
 33  0x00007fff8d6517cc __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ (in CoreFoundation)
 34  0x00007fff8d642ee5 __CFRunLoopDoBlocks (in CoreFoundation)
 35  0x00007fff8d64282b __CFRunLoopRun (in CoreFoundation)
 36  0x00007fff8d642275 CFRunLoopRunSpecific (in CoreFoundation)
 37  0x00007fff8b8aef0d RunCurrentEventLoopInMode (in HIToolbox)
 38  0x00007fff8b8aecb7 ReceiveNextEventCommon (in HIToolbox)
 39  0x00007fff8b8aeabc _BlockUntilNextEventMatchingListInModeWithFilter (in HIToolbox)
 40  0x00007fff8ad0e28e _DPSNextEvent (in AppKit)
 41  0x00007fff8ad0d8db -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] (in AppKit)
 42  0x00007fff8ad019cc -[NSApplication run] (in AppKit)
 43  0x00007fff8acec803 NSApplicationMain (in AppKit)
 44  0x00007fff89ff25fd start (in libdyld.dylib)
8个回答

16

我不确定哪一个解决了问题,但我在终端中输入以下内容,现在它又可以正常工作了:

cd ~/Library
sudo rm -rf './Preferences/com.apple.dt.Xcode.plist' './Autosave Information/com.apple.dt.Xcode.plist'  './Autosave Information/Unsaved Xcode Document.xcworkspace' './Caches/com.apple.dt.Xcode'

警告:请注意,这可能会删除其他偏好设置,例如键绑定,因此如果您对xcode环境进行了大量自定义,请小心。


1
在 beta 6.3 上遇到了问题,这个解决方案解决了我一年的问题 :) - Mathijs Segers
1
啊!这刚刚删除了我所有的键绑定和偏好设置!而且根本没有解决问题!不要这样做,最好使用这个解决方案,它只会重置保存的状态:http://apple.stackexchange.com/a/159609/18671 - Martin
谢谢,这个解决了我的问题 :) 不介意它清除了我的偏好设置。在一个正常工作的产品上没有偏好设置比在一个损坏的产品上有偏好设置要好 :) - Matthew Cawley

9

打开Finder并转到以下路径,删除其中的文件夹。这些文件夹是在我们暂时打开Xcode中的任何项目时创建的:

/Users/MyMac/Library/Developer/Xcode/DerivedData/

看起来那个目录还没有被创建。 - Kirby Todd

4

在我使用的Xcode6/Yosemite版本的mac电脑上,没有“Autosave Information”文件夹,所以我删除了~/Library/Saved Application State/com.apple.dt.Xcode.savedState文件夹,这样就停止崩溃了。


1
如果您在新窗口中打开了任何一个Swift文件(例如,当您在xCode中双击一个.swift文件时,它会在一个新窗口中打开),那么xCode打开时可能会出现问题。我认为当关闭xCode时,这个窗口是打开的,然后再次打开xCode时,这个窗口就会再次打开并因某种原因导致xCode崩溃。尝试在崩溃之前快速关闭此打开的窗口。奇怪的是,这对我起作用了。

0

在我的情况下,导致Xcode崩溃的场景有点不同。事实上,我遇到了相同的调用堆栈错误:

Application Specific Information:
ProductBuildVersion: 5A3005
ASSERTION FAILURE in /SourceCache/IDEXcode3ProjectSupport/IDEXcode3ProjectSupport-3575/Xcode3Sources/XcodeIDE/Frameworks/DevToolsBase/pbxcore/Xcode3Model/Xcode3OCUnitTestableDataSource.m:191
Details:  ([_indexableIdsToTestableTokens objectForKey:indexableIdentifier]) should be nil, but it is <Xcode3OCUnitTestableDataSourceToken: 0x7fe73b531ae0>
Object:   <Xcode3OCUnitTestableDataSource: 0x7fe7359c79f0>
Method:   -setTestableToken:indexableIdentifier:
Thread:   <NSThread: 0x7fe732415570>{name = (null), num = 1}
Hints:   None

但是我不得不复制一个现有的项目(.xcodeproj文件),以便在我的工作区中拥有一个依赖于其他项目(Build Phases中的Target Dependencies)的应用程序(用作调试应用程序)和一个不依赖于任何东西的应用程序,仅链接到相应项目目标的生成输出(在我的情况下,框架在Build Phases中的Link Binary With Libraries内)。问题是每次我将复制的项目导入我的工作区时,它都会使Xcode崩溃...由于崩溃堆栈跟踪正在谈论测试事物,因此我只需通过project.pbxproj并删除该文件中所有测试字符串的出现即可(好吧,我关心部分以避免损坏我的文件)。

复制的项目中的xctest目标出了些问题。一旦我再次尝试将其导入我的工作区,它就可以正常工作了。

希望这可以帮助到您。


0

如果你有工作空间,那么没有任何解决方案适用于我。但我发现了一个方法...

  • 如果你有工作空间文件,请删除它。在终端中使用“pod install”重新安装 pod(需要切换到你的项目文件夹)。

  • 再次打开工作空间...这将解决问题。


0
你也可以做一件事情(如果你在使用pods):-
  1. 右键点击你的xcworkspace
  2. 点击“显示包内容”
  3. 删除xcuserdata文件夹
  4. 重新启动Xcode

0

我已完全删除了文件夹Library/Developer: 关闭XCode

rm -r /Library/Developer

并且对于每个文件都说“是”

enter image description here


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