如何确定移动版Safari崩溃的原因?

14

我的网站在桌面端可以正常访问,但在移动端Safari浏览器上会崩溃。

我如何确定它崩溃的原因?

2个回答

24

当Safari意外退出并显示您的网站时,您可以采取以下措施:

1. Safari调试控制台

使用Safari的调试控制台。在iPhone上打开:设置->Safari->高级->调试控制台=开。

对我而言,它显示:

  • 第6行有2个HTML错误(视口参数值“device-width”用于键“width”未被识别,视口参数值“no”用于键“user-scalable”未被识别。)
  • 第6行还有2个HTML提示。

下次使用Safari检查您的网页时,将显示调试控制台。

2. Web Inspector(从iOS 6.0开始)

如果在您的网页中找出问题变得更加复杂,请使用Web Inspector调试移动版Safari。这是一个很好的教程。

使用IOS模拟器,我发现对于这个特定的网站,我拥有的所有iOS版本5.0、5.1和6.1都能正确运行页面而不会崩溃,但在设备(iOS 5.0.1)上仍会崩溃。

我的设备运行在iOS 5上,因此我无法访问Web Inspector,但这肯定是您在设备上检查您的网站并检查您的机器上的Web Inspector的下一步。

3. 使用iPhone配置实用程序的控制台

您可以下载苹果的iPhone配置实用程序,然后可以在Safari测试期间访问移动设备的控制台。

检查您的网站,我发现了几个内存警告,最终导致Safari崩溃。

4a. 使用Xcode的调试工具

使用Xcode,您还可以访问设备的控制台(“窗口”->“组织者”->“设备”选项卡->“控制台”)。

您的情况在控制台上报告如下:

Apr 30 10:15:18 unknown kernel[0] <Debug>: launchd[2489] Builtin profile: MobileSafari (sandbox)   
Apr 30 10:15:38 unknown MobileSafari[2489] <Warning>: Received memory warning. 
Apr 30 10:15:39 unknown SpringBoard[15] <Warning>: Received memory warning. 
Apr 30 10:15:50 unknown UserEventAgent[12] <Notice>: jetsam: kernel termination snapshot being created 
Apr 30 10:15:50 unknown com.apple.launchd[1] <Notice>: (UIKitApplication:com.apple.mobilephone[0xb2a4]) Exited: Killed: 9
Apr 30 10:15:50 unknown com.apple.launchd[1] <Notice>: (UIKitApplication:com.apple.mobilesafari[0xf755]) Exited: Killed: 9
Apr 30 10:15:50 unknown SpringBoard[15] <Warning>: Application 'Phone' exited abnormally with signal 9: Killed: 9
Apr 30 10:15:50 unknown SpringBoard[15] <Warning>: Application 'Safari' exited abnormally with signal 9: Killed: 9
Apr 30 10:15:52 unknown ReportCrash[2491] <Error>: Saved crashreport to /Library/Logs/CrashReporter/LowMemory-2013-04-30-101552.plist using uid: 0 gid: 0, synthetic_euid: 0 egid: 0

4b. 使用Xcode的调试工具Instruments

使用Instruments是另一种检查发生情况的复杂方式。

重新检查您的网站,我发现在Safari退出之前有很多低内存警告报告。不幸的是,这并没有直接帮助您发现网站问题,但也许可以帮助找到Safari开放的错误报告。


有趣..第6行是 viewport meta 标签。<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=no;"> 这一部分还没有被改动..所以不知道为什么会突然停止工作。 我将开启调试..感谢提示。 - Jamie Collingwood
嘿,现在我的iPhone Safari上运行没有调试错误和崩溃了。页面与桌面上的不同,但我可以滚动浏览。当滚动时,我看到一些灰色区域在移动,但随后消失了。顺便说一下,桌面网页非常酷! - nzs
但是,如果我在页面内点击一个选项卡(例如,“大”因素选项卡),它仍然会崩溃。 - nzs
唉...这个问题让我感到头疼,哈哈。今天早上在iPhone上这个网站完美运行。但对于我来说,它仍然在加载时崩溃。是的,它应该看起来有点不同,主要是iphone上的菜单。你能帮我一个忙再次运行调试吗?因为我修复了分号,我想知道是否会出现不同的错误。非常感谢你对网站的赞美。=) - Jamie Collingwood
1
设备现在似乎是在“窗口”->“设备和模拟器”下面单独的窗口了,不再在组织者下面。 - zacaj
显示剩余6条评论

4

我通过以下方式成功调试了崩溃问题:

  1. 使用Xcode连接到手机控制台
  2. 在控制台中找到崩溃信息,我的情况如下:

    Sep 2 17:16:21 Edwards-iPhone ReportCrash[7093] : Saved report to /Library/Logs/CrashReporter/JetsamEvent-2015-09-02-171621.ips

  3. 然后进入设置中的诊断(设置>隐私>诊断和用量数据-在iOS 8.4上是这样的,在其他版本上可能位置不同),找到崩溃文件。

这样就不需要猜测哪个崩溃报告是你遇到的问题。


4
在 iOS 10 及以上版本中,可以在“设置 > 隐私 > 分析 > 分析数据”中找到移动 Safari 崩溃报告。 - Josh Buchea

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接