美文网首页技术
iOS异常处理:mach_msg_trap处异常

iOS异常处理:mach_msg_trap处异常

作者: 鹰凌天下 | 来源:发表于2016-04-09 16:25 被阅读3956次

    问题描述:

    app运行的时候,xcode中断,显示信息:

    libsystem_kernel.dylib`mach_msg_trap:

    0x194e6ce74:  movn  x16, #30

    0x194e6ce78:  svc    #128

    0x194e6ce7c:  ret    -----------> 在这里中断

    (这时候,点运行按钮,app能继续运行,-_-#  我开始以为这是xcode某种提示,实际运行可能不会有问题;实际情况是:如果不是调试模式,在此情况下,app会异常退出)

    解决思路:

    跟踪断点,在lldb下敲入bt

    (lldb) bt

    * thread #1: tid = 0x3003d, 0x0000000183518fd8 libsystem_kernel.dylib`mach_msg_trap + 8, queue = 'com.apple.main-thread', stop reason = signal SIGPIPE

    ……

    原来是收到了sigpipe消息,该消息的默认处理方法是退出程序;所以就得在程序中找可能产生该消息的代码:某fd已释放,却依然write,操作两次就会产生sigpipe消息

    在lldb调试窗口输入:process handle SIGPIPE -s false   这样调试的时候,app收到sigpipe信号,Xcode就不会中断了。

    相关文章

      网友评论

        本文标题:iOS异常处理:mach_msg_trap处异常

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