You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

@main处报EXC_BAD_ACCESS错误,异常断点不显示出错行如何调试

强制Xcode展示崩溃具体位置的调试方案
  • 开启僵尸对象诊断:打开Xcode的Scheme编辑界面(快捷键⌘ + <),切换到Run - Diagnostics标签,勾选Zombie Objects。EXC_BAD_ACCESS (code=2) 代表尝试向非法内存地址写入数据,大多是访问已释放对象、属性访问冲突导致,开启后崩溃时会打印对应僵尸对象的信息和完整调用栈。
  • 添加全范围断点:除了默认的Swift/OC异常断点,额外添加两个符号断点:objc_exception_throw、malloc_error_break,可以捕获到默认异常断点漏抓的底层异常触发点。
  • 手动解析调用栈:崩溃后打开左侧Debug导航栏,找到Thread 1的完整调用栈列表,忽略系统框架的符号,找到带你的项目名称的符号行,点击即可跳转到对应的业务代码位置。
当前场景排查思路

你给出的崩溃发生在@main入口,且代码中使用了@AppStorage属性包装器,可按以下顺序排查:

@main
struct Secret0App: App {
    @AppStorage("isOnboarding") var isOnboarding = true
  • 检查isOnboarding的读写逻辑:如果存在多线程同时读写该值、或者在App初始化完成前就有其他实例提前访问该属性的情况,都可能触发野指针崩溃。
  • 回滚最近变更:如果崩溃是新增代码后出现,优先回滚最近修改的App初始化逻辑、根视图逻辑、全局存储相关代码,验证崩溃是否复现。
  • 最小化验证:临时注释掉App入口的自定义初始化逻辑、根视图的入参,只保留最简启动代码,逐步恢复逻辑定位触发崩溃的代码块。

内容的提问来源于stack exchange,提问作者Nat Serrano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 00:54:04