您的位置:首页 > 移动开发 > IOS开发

IOS开发笔记之七——Xcode 6.0.1下出现Thread 1: signal SIGPIPE问题的参考解决方案

2014-09-22 15:11 609 查看
1、问题描述

模拟器调试时,客户端切换到不同的开发站点,会导致应用程序进入一种无法离开的debug状态,打印堆栈结果如下:

(lldb) bt

* thread #1: tid = 0x30068, 0x07556f96 libsystem_platform.dylib`_platform_memcmp + 150, queue = 'com.apple.main-thread',stop reason = signal SIGPIPE

* frame #0: 0x07556f96 libsystem_platform.dylib`_platform_memcmp + 150

frame #1: 0x061616da CoreFoundation`__CFStringEqual + 394

frame #2: 0x061614ba CoreFoundation`CFEqual + 218

frame #3: 0x06178b2b CoreFoundation`-[__NSCFString isEqual:] + 283

frame #4: 0x0618e3ac CoreFoundation`-[__NSDictionaryM objectForKey:] + 156

frame #5: 0x0e506da8 CoreUI`-[CUIStructuredThemeStore renditionWithKey:] + 347

frame #6: 0x0e517eb9 CoreUI`-[CUINamedImage _renditionForSpecificKey:] + 194

frame #7: 0x0e517f05 CoreUI`-[CUINamedImage _rendition] + 46

frame #8: 0x0e517f2c CoreUI`-[CUINamedImage image] + 34

frame #9: 0x03ba29a2 UIKit`__98-[_UIAssetManager imageNamed:scale:idiom:subtype:cachingOptions:sizeClassPair:attachCatalogImage:]_block_invoke + 332

frame #10: 0x03ba27a5 UIKit`-[_UIAssetManager imageNamed:scale:idiom:subtype:cachingOptions:sizeClassPair:attachCatalogImage:] + 188

frame #11: 0x03cbdf83 UIKit`-[UIImageAsset imageWithTraitCollection:] + 595

frame #12: 0x035f5b35 UIKit`-[UIImageView _resolveImageForTrait:] + 308

frame #13: 0x035f59fa UIKit`-[UIImageView traitCollectionDidChange:] + 57

看原因可知,是由于SIGPIPE导致的。查阅下资料看下这个SIGPIPE到底是个什么东西。

2、问题原因:

在ios手机client请求到Server端试图建立TCP连接时,往往需要多次请求,中间会有失败的请求,所以服务器会经常去close一个连接,在TCP连接中,client会收到

一个RST响应。之前如果client已发出的数据,系统会发出SIGPIPE信号给client进程,告诉进程这个连接已经失效,不要再去写数据了。若根据默认规则,应用程

序进程会被terminate,client的进程会退出。根据测试的现象来看,IOS应用程序并没有直接退出,看来是做了SIGPIPE信号屏蔽处理,屏蔽处理让app收到SIGPIPE

信号之后不会crash。但是会在进行debug调试时触发debug中断,正如上述现象。

3、参考解决方案

要从根本上解决这个问题,需要服务端与客户端协同进行修改处理。但是在客户端别人提供了个临时解决的办法,就是在调试入口设置断点,让debug console进入

gdb或是lldb状态。我们IOS开发使用的是LLVM,所以使用process handle SIGPIPE -s false。

gdb

handle SIGPIPE nostop

lldb

process handle SIGPIPE -s false

断点设置如下:





之后形成断点如下:



4、参考资料

http://antbruce10.blog.163.com/blog/static/21541111720140844435786/

http://blog.chinaunix.net/uid-9435177-id-2002671.html

/article/7765188.html

/article/8209097.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐