代码之家  ›  专栏  ›  技术社区  ›  kawingkelvin

clang在xcode中编译.cpp时崩溃,处于释放模式,但在调试中正常

  •  2
  • kawingkelvin  · 技术社区  · 6 年前

    我有一个项目,我有一个.h,.cp,和一个桥接头,所以基本上尝试调用一些来自SWIFT的C++代码。当我在调试模式下构建和运行时,事情看起来很好。

    如果我切换到释放模式,它将无法构建,并且在clang编译期间发生崩溃。信息如下:

    clang: error: unable to execute command: Segmentation fault: 11
    clang: error: clang frontend command failed due to signal (use -v to see invocation)
    Apple LLVM version 10.0.0 (clang-1000.11.45.5)
    Target: aarch64-apple-darwin17.7.0
    Thread model: posix
    InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
    clang: note: diagnostic msg: PLEASE submit a bug report to http://developer.apple.com/bugreporter/ and include the crash backtrace, preprocessed source, and associated run script.
    clang: note: diagnostic msg: 
    ********************
    
    PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
    Preprocessed source(s) and associated run script(s) are located at:
    clang: note: diagnostic msg: /var/folders/r5/bs8mgc751_bbl3gcths89jc00000gp/T/CBaseMath-8e4bd0.cpp
    clang: note: diagnostic msg: /var/folders/r5/bs8mgc751_bbl3gcths89jc00000gp/T/CBaseMath-8e4bd0.sh
    clang: note: diagnostic msg: Crash backtrace is located in
    clang: note: diagnostic msg: /Users/kelvinchan/Library/Logs/DiagnosticReports/clang_<YYYY-MM-DD-HHMMSS>_<hostname>.crash
    clang: note: diagnostic msg: (choose the .crash file that corresponds to your crash)
    clang: note: diagnostic msg: 
    

    在按照指示为苹果提交一份bug报告之前,我是否知道有什么需要检查的地方?我试图查看.crash文件,但我没有足够的技术知识来理解它。它不引用我所拥有的任何C++代码。

    1 回复  |  直到 6 年前
        1
  •  1
  •   JVApen    6 年前

    你的编译器出故障了,这很烦人。记录错误的最好方法是尽可能地减少这一点。

    最好的方法是使用一个名为 Creduce . 这是一个需要文件和脚本的程序。文件是你的开始情况。脚本需要证明您的bug仍然存在。

    在这种情况下,您的脚本可能存在于关于2个编译命令和检查返回代码的地方。文件只是您的.cpp

    有了这些,程序将丢弃代码…尽可能减少文件。我已经看到10万条线路减少到5条。

    技巧:预处理的文件虽然是自包含的,但更大,这使得减少更容易。

    最后,你需要很多时间。你启动它,它运行直到它被减少

    如果它在不到五分钟的时间内运行,则说明脚本有问题,并且通常以空的.cpp结束,预期时间在小时范围内。