如何排查Xcode出现Illegal Instruction: 4报错的问题
Illegal Instruction: 4 报错排查方案
一、本地环境差异化校验
- 执行
xcode-select -p确认Xcode命令行工具路径指向Xcode 12.5.1本体,而非系统自带命令行工具或其他版本Xcode的路径 - 对比你与同事的
~/.zshrc/~/.bash_profile配置,排查是否存在自定义的IPHONEOS_DEPLOYMENT_TARGET、MACOSX_DEPLOYMENT_TARGET全局覆盖参数 - 排查本地是否安装了第三方Xcode插件、LLDB插件、或Hook Xcode构建流程的工具,这类工具可能无感知修改本地构建产物的指令集
二、项目构建配置校验
- 打开项目构建设置搜索
Optimization Level,确认Debug模式下未被修改为-Os/-O类优化选项,特定优化等级下Swift编译器会针对Big Sur架构生成不兼容的非法指令 - 搜索
Valid Architectures,确认本地架构配置与同事一致,没有额外添加arm64e等未兼容的架构参数 - 检查是否存在仅本地生效的
.xcconfig配置文件、或CocoaPods本地修改的Pod配置,执行pod install --repo-update后重新构建验证
三、报错堆栈精准定位
- 开启Xcode所有异常断点(含Swift异常、Objective-C异常、符号断点),复现报错后查看崩溃栈首帧,确认是否触发了强制解包失败、数组越界之外的编译器生成非法指令
- 导出崩溃日志后执行
atos -arch [设备架构] -o [app路径] [崩溃地址]解析符号,若崩溃位置无对应业务代码则大概率为编译环节生成的指令问题 - 临时将项目Swift语言版本降级到5.3构建验证,Xcode 12.5.1自带的Swift 5.4在Big Sur下存在少量已知的指令生成Bug
四、兜底验证方案
- 新建空白Swift+UIKit项目运行最简测试代码,确认是否仍会抛出该报错,排除系统层面兼容性问题
- 切换Xcode到Rosetta模式运行构建,验证是否为arm架构适配导致的指令异常
内容的提问来源于stack exchange,提问作者forrest
相关产品推荐
相关产品推荐

