iOS异常处理:mach_msg_trap处异常
2016-04-09 本文已影响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就不会中断了。