技术

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就不会中断了。

上一篇下一篇

猜你喜欢

热点阅读