美文网首页
Xcode编译项目崩溃 IDEDiagnosticActivit

Xcode编译项目崩溃 IDEDiagnosticActivit

作者: 一季_又一寂 | 来源:发表于2017-07-30 16:42 被阅读72次

    之前有个项目,在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:   <IDEDiagnosticFixItItem: 0x7fe3d47a4f30>
    Method:   -initWithFixItString:replacementLocation:
    Thread:   <NSThread: 0x7fe3d4815e80>{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配置。

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

    3682F837-4019-4C2D-8AFE-99324B39C930.png

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

    C600196B-8C5A-4544-9146-0A21BC05DA96.png

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

    相关文章

      网友评论

          本文标题:Xcode编译项目崩溃 IDEDiagnosticActivit

          本文链接:https://www.haomeiwen.com/subject/iwqklxtx.html