如何确定 Mobile Safari 崩溃的原因?

Posted

技术标签:

【中文标题】如何确定 Mobile Safari 崩溃的原因?【英文标题】:How can I determine what crashed Mobile Safari? 【发布时间】:2013-04-23 13:20:17 【问题描述】:

我的网站在 Mobile Safari 上崩溃,但在桌面上运行良好。

如何确定崩溃的原因?

【问题讨论】:

【参考方案1】:

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

1. Safari 调试控制台

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

对我来说它说

第 6 行出现 2 个 html 错误(键“width”的视口参数值“device-width”无法识别,键“user-scalable”的视口参数值“no”无法识别。) 第 6 行还有 2 个 HTML 提示。

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

2。网页检查器(来自 ios 6.0)

如果在您的网页中找出问题变得更加复杂,请使用 Web Inspector 来调试 Mobile Safari。 It is a great tutorial for this.

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

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

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

您可以下载苹果的iPhone Configuration Utility,然后您可以在Safari测试期间访问您手机的控制台。

检查您的网站,我看到了一些内存警告,最终导致 Safari 崩溃。

4a。使用 Xcode 的调试工具

使用 Xcode 您还可以访问设备的控制台(Window->Organizer->Devices tab->Console)。

您的案例在控制台上报告了以下内容:

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 行是视口元标记。 这没有改变.. 很困惑为什么它会全部突然停止工作。我将打开调试.. 感谢您的提示。 如果您发现了什么,请在此处记录您的解决方案以从中学习:) 我也没有调试选项.. 只有一个网络检查器选项,但它说我需要将它连接到我的计算机,我没有 Mac 来连接它。另外,我看到使用冒号不正确,所以我改为逗号.. 但它仍然崩溃 嘿,现在它可以在我的 iPhone Safari 上运行,没有调试错误和崩溃。该页面与桌面上的页面不同,但我可以滚动浏览。滚动时我看到一些灰色区域在移动,但随后消失。顺便说一句,桌面网页非常酷! 但如果我点击页面内的一个标签(例如“大”因素标签)它仍然崩溃..【参考方案2】:

我通过执行以下操作成功调试了崩溃:

    使用 xcode 连接到手机控制台

    在控制台中找到崩溃,在我的例子中是这样的:

    9 月 2 日 17:16:21 Edwards-iPhone ReportCrash[7093]:将报告保存到 /Library/Logs/CrashReporter/JetsamEvent-2015-09-02-171621.ips

    然后转到设置中的诊断(设置 > 隐私 > 诊断和使用数据 - 在 ios 8.4 上。它在其他版本的不同位置)并找到崩溃文件。

这消除了猜测您遇到的崩溃报告的需要。

【讨论】:

在 iOS 10+ 移动 safari 崩溃报告可以在:Settings &gt; Privacy &gt; Analytics &gt; Analytics Data

以上是关于如何确定 Mobile Safari 崩溃的原因?的主要内容,如果未能解决你的问题,请参考以下文章

如何确定导致 iOS Safari 中“样式无效”的原因?

Safari 在 iF​​rame 上使用输入崩溃

iPhone Mobile Safari:强制键盘打开

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

iOS mobile safari - 底部栏覆盖了我的页脚

隐藏 Safari 组件时如何使用 jQuery Mobile 从错误加载页面中恢复?