Tengo un proyecto en el que tengo un .h, .cpp y un encabezado puente, así que básicamente trato de llamar a un código C++ de Swift. Cuando construí y ejecuté en modo de depuración, las cosas se veían bien.
Si cambio al modo de lanzamiento, no se pudo compilar y el bloqueo ocurrió durante la compilación desde Clang. Aquí está el mensaje:
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:¿Alguna idea de si hay algo que deba mirar antes de intentar presentar un informe de error para Apple según las instrucciones? Traté de mirar el archivo .crash pero no soy lo suficientemente técnico para entenderlo. No hace referencia a ninguno de los códigos c ++ que tengo.
Tiene un bloqueo en su compilador, lo cual es molesto. La mejor manera de registrar un error es reducirlo tanto como sea posible.
La mejor manera de hacerlo es con un programa llamado Creduce . Es un programa que requiere un archivo y un script. El archivo es su situación inicial. La secuencia de comandos debe demostrar que su error aún existe.
En este caso, su secuencia de comandos podría existir sobre los 2 comandos de compilación y verificar el código de retorno. El archivo es simplemente su .CPP
Con todo esto, el programa tirará código... y reducirá el archivo al máximo. He visto 100 000 líneas reducidas a 5.
Un truco: los archivos preprocesados son más grandes aunque autónomos, lo que facilita su reducción.
Finalmente, necesitas mucho tiempo. Lo pones en marcha y funciona hasta que se reduce
Si se ejecuta en menos de cinco minutos, su secuencia de comandos es defectuosa y generalmente termina con un .CPP vacío. El tiempo esperado está en el rango de horas.