Xcode编译项目崩溃 IDEDiagnosticActivityLogMessage.m

之前有个项目,在Xcode8.3上编译直接闪退,是编译器闪退了,一直没有找到原因,下面是Xcode错误报告,一直没有找到解决原因,开始以为是项目中用到了和系统冲突的类,因为我刚升级到Xcode8.3 , 之前在8.1上没有任何问题。

部分Xcode崩溃日志


Time Awake Since Boot: 3600 seconds

System Integrity Protection: enabled

Crashed Thread:        17  Dispatch queue: shared-compile-command-queue :: NSOperation 0x7fe3d4ac3210 (QOS: DEFAULT)

Exception Type:        EXC_CRASH (SIGABRT)
Exception Codes:       0x0000000000000000, 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Application Specific Information:
ProductBuildVersion: 8E3004b
ASSERTION FAILURE in /Library/Caches/com.apple.xbs/Sources/IDEFrameworks/IDEFrameworks-12175.1/IDEFoundation/Diagnostic/IDEDiagnosticActivityLogMessage.m:298
Details:  (fixItString) should not be nil.
Object:   
Method:   -initWithFixItString:replacementLocation:
Thread:   {number = 47, name = (null)}
Hints:   
 
Backtrace:
  0   -[IDEAssertionHandler handleFailureInMethod:object:fileName:lineNumber:assertionSignature:messageFormat:arguments:] (in IDEKit)
  1   _DVTAssertionHandler (in DVTFoundation)
  2   _DVTAssertionFailureHandler (in DVTFoundation)
  3   -[IDEDiagnosticFixItItem initWithFixItString:replacementLocation:] (in IDEFoundation)
  4   -[IDEClangDiagnosticActivityLogMessage initWithDiagnostic:timestamp:pathMap:workingDirectory:documentURL:] (in IDEFoundation)
  5   -[IDEClangDiagnosticActivityLogMessage initWithDiagnostic:timestamp:pathMap:workingDirectory:] (in IDEFoundation)
  6   _XCMessageForDiagnostic (in DevToolsCore)
  7   XCGenerateDiagnosticsFromFile (in DevToolsCore)
  8   -[XCClangResultsPostprocessor generateDiagnosticsFromFile:logSectionRecorder:] (in DevToolsCore)
  9   -[XCClangResultsPostprocessor postprocessResultsForCommandInvocation:] (in DevToolsCore)
 10   -[XCWorkQueueCommandSubprocessInvocation handleEndOfOutput] (in DevToolsCore)
 11   -[XCWorkQueueCommandLocalSubprocessInvocation handleEndOfOutput] (in DevToolsCore)

解决思路:
1.看报错信息中有提到 IDEDiagnosticActivityLogMessage.m 这个类,于是全局搜了一下,没有结果,是系统私有类。
2:google 百度搜了一下,有类似的内容,但是没有提到有用的解决方案。
3:考虑是项目中第三方引起的,第三方都是用cocoapods,于是一个一个的第三方移除,崩溃依旧 , 所以不是第三方库引起的。

就这样,一直没有找到解决方案,还好项目在Xcode8.1上没有问题,所以一直在想是不是Xcode本身的问题,因为项目在其他电脑上Xcode8.2或8.3以上都是在编译就会造成编译器闪退,

今天周末,想想得好好研究一下这个原因了,于是 思考在编译阶段就能造成闪退,并且和第三方库没有关系,那么有可能是项目的配置或者某个类的头文件里面有问题,于是首先想到了 PrefixHeader.h 文件,因为我的某些头文件声明就是放这里面的,于是去看了一下Build Settings里面pch配置。

.......果然发现了问题:

Xcode编译项目崩溃 IDEDiagnosticActivityLogMessage.m_第1张图片
3682F837-4019-4C2D-8AFE-99324B39C930.png

项目文件夹:Other 是大写的 , 在路径中写成了小写,(⊙﹏⊙) , 更改之后果然解决了问题。

Xcode编译项目崩溃 IDEDiagnosticActivityLogMessage.m_第2张图片
C600196B-8C5A-4544-9146-0A21BC05DA96.png

问题很简单,但是确困扰了几周,主要是在Xcode8.1运行没问题,但是在8.2以上运行就闪退 ,这点很大程度误导了我 , 一直以为是Xcode出了问题。现在依然不知道为啥在Xcode8.1上大小写没有影响呢?

你可能感兴趣的:(Xcode编译项目崩溃 IDEDiagnosticActivityLogMessage.m)