正在加载今日诗词....
1 min read

Signal SIGABRT 问题

iOS 应用经常会遇到一些崩溃问题, 但是有些崩溃并不会出现一些详细的堆栈调用或者是崩溃的位置并不是在自己所写的代码中,导致无从下手,其中最重要的关节是明白, 系统通信的信号 本质是什么, 如何定位于解决
Signal SIGABRT 问题

有时候会遇到Signal SIGABRT 崩溃, 因为没有具体的方法调用, 所有很难查找问题出现的原因.
所以这里会记录一下,开发时遇到这种问题的原因

  • ① iOS 中: 原因 xib 时 给某个 UI 设置了 KVC 的属性处理, 或者是@IBOutlet 连线到代码中的部分被删除了; 或者 属性检查器里的identifier与源码不对应
    • 如何解决奔溃问题--SIGABRT和EXC_BAD_ACCESS
    • Cocos2d或UIKit等框架通常会在特定的前提条件没有满足或一些糟糕的情况出现时调用C函数abort(由它来发送此信号)
    • 解决 在LLDB控制台上键入bt命令打印出回溯信息
  • ② 底层语言方面: 多次free导致的SIGABRT , 内存的过度释放 ; 执行abort函数 ; 执行到assert函数
  • ③ 其他的信号崩溃学习