XCode 9 iOS 11 BoringSSL SSL_ERROR_ZERO_RETURN

Jas*_*uan 60 xcode ios boringssl

我有一个在iOS上运行的简单程序HelloWorld.相同的代码已经运行了很长时间.最近,我注意到当程序在我的Macbook上连接到XCode 9的ipad上运行时,我得到了以下BoringSSL错误.我在模拟器中运行程序时没有看到此错误.iOS是11.2.Xcode是9.2.

我的代码没有引用BoringSSL.但是,它确实使用NSMutableURLRequest来对服务器进行https调用.该调用工作正常,除了BoringSSL消息外,一切似乎都能正常工作.

有没有办法可以调试消息出现的原因?HellowWorld [466:85961],这2个数字是什么意思?

有谁知道这个消息意味着什么以及如何避免它?

2017-12-13 15:41:13.486047-0500 HellowWorld[466:85961] [BoringSSL] Function boringssl_session_errorlog: line 2871 [boringssl_session_read] SSL_ERROR_ZERO_RETURN(6): operation failed because the connection was cleanly shut down with a close_notify alert
2017-12-13 15:41:13.486363-0500 HellowWorld[466:85961] [BoringSSL] Function boringssl_session_errorlog: line 2871 [boringssl_session_read] SSL_ERROR_ZERO_RETURN(6): operation failed because the connection was cleanly shut down with a close_notify alert
Run Code Online (Sandbox Code Playgroud)

截图添加

l'L*_*L'l 21

有没有办法可以调试消息出现的原因?

是的,,我有点惊讶它尚未被提及.

CFNetwork处理Foundation网络类的核心- 它还具有(通常被忽视的)通过CFNETWORK_DIAGNOSTICS环境变量进行详细日志记录的功能.

以编程方式启用CFNetwork诊断记录:

setenv("CFNETWORK_DIAGNOSTICS", "3", 1);
Run Code Online (Sandbox Code Playgroud)

它应设置为0到3之间的整数值,其中0表示关闭,较高的数字会逐渐增加日志记录.在正常开发期间,您可以通过Xcode的方案编辑器设置此环境变量.当应用从Xcode中运行,该CFNetwork日志条目将出现在调试控制台区域(如果不可见,选择View> Debug Area> Show Debug Area).

环境变量应该放在应用程序启动序列的开头.通常把它放在main的开头就足够了,但是如果你有C++静态初始化器,CFNetwork那么你必须把它放在那些之前.

注意:在Swift中,这段代码会进入main.swift.默认情况下,Swift应用程序没有main.swift; "Swift编程语言"解释了如何添加一个.
*另请注意,在Swift中删除结尾处的分号setenv.

设置上面的环境变量肯定有助于确定问题的位置,或者至少为您提供一个开始诊断有点模糊的错误消息的起点.

↳CFNetwork 诊断记录

  • 实际上尝试了'setenv("CFNETWORK_DIAGNOSTICS","3",1);'并且它使我的iPhone 6+变得粗糙.所以要警告一下:只能通过Xcode方案编辑器来设置.......并从一个温和的值开始,如"1". (5认同)