美文网首页
从信号量看崩溃原因

从信号量看崩溃原因

作者: yyggzc521 | 来源:发表于2021-12-16 00:37 被阅读0次

    SIGTRAP

    数组越界、类型转换失败、强制解包等引起的崩溃都属于这一种。
    Apple官方资料-解决 Swift 运行时错误导致的崩溃 中有提到

    SIGSEGV

    段错误
    当程序试图访问不被允许访问的内存区域(比如,尝试写一块属于操作系统的内存),或以错误的类型访问内存区域(比如,尝试写一块只读内存)

    SIGSEGV在很多时候是由于指针越界引起的,但并不是所有的指针越界都会引发SIGSEGV。

    SIGABRT

    由调用abort函数产生,进程非正常退出

    导致SIGABRT的原因,可能有以下几个

    • 多次free导致
    • 执行abort、assert函数

    SIGILL

    • 将不正确的数据段写入代码段
    • 指令集的演进
    • 工具链BUG
    • 访存对齐或浮点数格式问题
    • 错误排查方法

    SIGBUS

    由于进程引起了一个总线错误

    原因:

    • 对齐的读或写

    SIGFPE

    当一个进程执行了一个错误的算术操作时发送给它的信号
    原因:
    1.FPE_INTDIV 整数除以零
    2.FPE_INTOVF 整数上溢
    3.FPE_FLTDIV 浮点除以零
    4.FPE_FLTOVF 浮点上溢
    5.FPE_FLTUND 浮点下溢
    6.FPE_FLTRES 浮点结果不准
    7.FPE_FLTINV 无效浮点操作
    8.FPE_FLTSUB 浮点下标越界


    Apple官方资料-使用崩溃报告和设备日志诊断问题
    Apple官方资料-了解崩溃报告中的异常类型

    信号量崩溃原因初探

    相关文章

      网友评论

          本文标题:从信号量看崩溃原因

          本文链接:https://www.haomeiwen.com/subject/ysrmfrtx.html