Xcode中退出代码4的含义是什么?空指针程序运行异常咨询
Xcode中程序退出代码4的含义
你编写的触发崩溃的代码如下:
void Race4(){ int * p = nullptr; *p = 50; } int main(int argc, const char * argv[]) { Race4(); return 0; }
运行时出现两种不同反馈:
- 在Xcode中输出:
Program ended with exit code: 4 - 在终端直接运行时输出:
➜ Release ./Debuging_Profiling [1] 65903 illegal hardware instruction ./Debuging_Profiling
退出代码4的具体含义
在macOS(Xcode基于该环境)的退出码规范中,退出代码4对应EXILP(Illegal Instruction,非法指令),和终端提示的illegal hardware instruction是同一错误的不同表现形式。
你的代码中对空指针nullptr进行解引用赋值,在ARM架构的macOS(如M系列芯片)上,这类内存访问错误会被系统转化为非法指令异常,最终对应退出码4;终端直接运行时会直白打印异常类型,Xcode则以统一的退出码标识程序终止原因。
关于使用atos工具的说明
若要通过atos解析崩溃符号,需确保程序生成了带符号信息的二进制(Debug模式默认开启,Release模式需手动配置符号生成)。另外,Xcode会在崩溃时自动生成崩溃报告(可通过Window > Organizer > Crashes查看),其中已包含解析好的调用栈,比手动使用atos更便捷。
内容的提问来源于stack exchange,提问作者Mohit Sharma
相关产品推荐
相关产品推荐

