iOS获取崩溃日志
重要提示: 此文档不再更新。有关Apple SDK的最新信息,请访问文档网站。
来源: https://developer.apple.com/library/archive/qa/qa1747/_index.html
问:如何在没有Xcode调试器的情况下调试部署的应用程序?
答:一旦部署了应用程序,无论是通过App Store还是作为Ad Hoc或Enterprise构建,您都无法将Xcode的调试器附加到它上面。要调试问题,您需要分析设备的崩溃日志和控制台输出。
Apple Watch崩溃日志将在配对设备上提供,也可以使用下述方法获取。
有关编写富NSLog语句的更多信息,请参阅Objective-C中的改进日志记录。
获取崩溃日志和控制台输出
直接从没有Xcode的设备获取崩溃日志
您的用户可以通过其设备检索崩溃报告,并按照这些说明通过电子邮件将其发送给您。
(无法直接从设备获取设备控制台日志)
1)打开设置应用
2)转到隐私,然后是诊断和使用
3)选择诊断和使用数据
4)找到崩溃的应用程序的日志。日志将以以下格式命名:<AppName> _ <DateTime> _ <DeviceName>
5)选择所需的日志。然后,使用文本选择UI选择日志的整个文本。选择文本后,点按“复制”
6)将复制的文本粘贴到Mail并根据需要发送到电子邮件地址
使用Xcode从设备获取崩溃日志和控制台输出
即使您无法在Xcode的调试器中运行该应用程序,Xcode仍然可以为您提供调试问题所需的所有信息。
使用Xcode 6
1)插入设备并打开Xcode
2)从菜单栏中选择Window - > Devices
3)在左列的DEVICES部分下,选择设备
4)要查看设备控制台,请单击右侧面板左下角的向上三角形
5)单击右下角的向下箭头将控制台另存为文件
6)要查看崩溃日志,请选择右侧面板“设备信息”部分下的“查看设备日志”按钮
7)在Process列中找到您的应用程序,然后选择Crash log以查看内容。
8)要保存崩溃日志,请右键单击左列中的条目,然后选择“导出日志”
9)Xcode 6还将列出低内存日志。这些将显示为进程名称“未知”和类型“未知”。您应该检查这些日志的内容,以确定是否有任何这些日志是由您的应用程序引起的。有关内存不足日志的详细信息,请参阅了解和分析iOS应用程序崩溃报告。
使用Xcode 5
1)插入设备并打开Xcode
2)打开“管理器”窗口,然后选择“设备”选项卡
3)在左列的DEVICES部分下,展开设备的列表
4)选择设备日志以查看崩溃日志,或选择控制台以查看控制台输出
启用App Store诊断报告
从选择向Apple发送诊断和使用信息的客户自动收集崩溃日志。
从Xcode 6.3开始,可以在Xcode Organizer中找到至少运行iOS 8.3和TestFlight beta测试人员的App Store客户的崩溃日志。要获取这些崩溃日志:
1)在Xcode 6.3及更高版本中打开管理器窗口
2)选择顶部的“崩溃”。然后可以在此窗口中找到可用的崩溃日志。
“ 应用程序分发指南”包含有关崩溃报告服务的更多信息。
可以在iTunes Connect中找到运行较旧iOS版本的客户的崩溃报告。
如果有人报告崩溃,并且您在iTunes Connect中没有看到相应的报告,则应将其引导至以下适用于Mac或Windows的知识库文章,以便他们可以选择向您发送崩溃报告。
了解崩溃日志和控制台输出
理解崩溃日志的第一步也是最重要的一步是对它们进行符号化。符号化用人类可读的函数名称和行号替换内存地址。
如果您通过Xcode的设备窗口从设备上获取崩溃日志,那么几秒后它们将自动为您设置符号。否则,您需要通过将.crash文件导入Xcode来自己进行符号化。打开Xcode Devices窗口,选择有问题的设备,将崩溃文件拖到左侧列,按住Control键并单击刚刚添加的文件,然后从菜单中选择“Re-Symbolicate Log”。
有关解释崩溃日志的更多信息,请参阅了解和分析iOS应用程序崩溃报告技术说明以及了解iPhone OS WWDC 2010会话上的崩溃报告。
文档修订历史
| 日期 | 笔记 |
|---|---|
| 二零一五年七月三十零日 |
添加了Apple Watch崩溃日志的注释,以及如何从Xcode获取App Store和TestFlight崩溃日志的说明。 |
| 2015年5月14日 |
添加了直接从设备获取崩溃日志而不使用Xcode的方法 |
| 2015年1月8日 |
更新的链接和删除的部分不再相关。 |
| 情节中字 |
使用Xcode 6获取设备控制台和日志的更新说明 |
| 2012-03-28 |
添加了有关低内存日志的说明。 |
| 2011-11-09 |
新文档,描述如何通过App Store或Ad Hoc构建调试已部署的应用程序 |
iOS获取崩溃日志的更多相关文章
- ios 获取崩溃日志
虽然有了try catch异常捕获,但是还是存在崩溃异常无法捕获到的.我可以通过下面的方式来获取崩溃日志: - (BOOL)application:(UIApplication *)applicati ...
- 【转】iOS应用崩溃日志分析
作为一名应用开发者,你是否有过如下经历? 为确保你的应用正确无误,在将其提交到应用商店之前,你必定进行了大量的测试工作.它在你的设备上也运行得很好,但是,上了应用商店后,还是有用户抱怨会闪退 ! ...
- iOS应用崩溃日志分析
转自raywenderlich 作为一名应用开发者,你是否有过如下经历? 为确保你的应用正确无误,在将其提交到应用商店之前,你必定进行了大量的测试工作.它在你的设备上也运行得很好,但是,上了应 ...
- 【转】iOS应用崩溃日志揭秘
这篇文章还可以在这里找到 英语 If you're new here, you may want to subscribe to my RSS feed or follow me on Twitter ...
- iOS应用崩溃日志揭秘
这篇文章还可以在这里找到 英语 Learn how to make sense of crash logs! 本文作者是 Soheil Moayedi Azarpour, 他是一名独立iOS开发者. ...
- iOS应用崩溃日志分析 iOS应用崩溃日志揭秘
转自:http://www.raywenderlich.com/zh-hans/30818/ios%E5%BA%94%E7%94%A8%E5%B4%A9%E6%BA%83%E6%97%A5%E5%BF ...
- 转:ios应用崩溃日志揭秘
http://www.raywenderlich.com/zh-hans/30818/ios应用崩溃日志揭秘
- IOS设备获取崩溃日志的办法
除了用xcode 的devices功能获取之外,在windows下面也是可以获取的.首先安装itools.下载地址: http://www.itools.cn/ 安装好后将设备(iphone或ipad ...
- iOS,应用崩溃日志分析
参考资料:http://www.cocoachina.com/industry/20130725/6677.html 1.获得崩溃日志 2.崩溃日志实例 3.符号化崩溃日志 4.低内存闪退 获得崩溃日 ...
随机推荐
- Centos7修改默认网卡名(改为eth0)以及网卡启动报错RTNETLINK answers: File exists处理
安装好centos7版本的系统后,发现默认的网卡名字有点怪,为了便于管理,可以手动修改.下面对centos7版本下网卡重命名操作做一记录:1)编辑网卡信息[root@linux-node2~]# cd ...
- Docker使用Link与newwork在容器之间建立连接
一,使用 --link容器互联 docker 默认使允许container 互通的(通过-icc=false 关闭互通)同一个宿主机上的多个docker容器之间如果想进行通信,可以通过使用容器的ip地 ...
- WordPress版微信小程序3.2版发布
WordPress版微信小程序(下称开源版)距离上次更新已经过去大半年了,在此期间,我开发新的专业版本-微慕小程序(下称微慕版),同时开源版的用户越来越多,截止到2018年11月26日,在github ...
- 对python的一些拙见
对于python,总的来说有点机缘巧合的识得了它.当我录取专业是计算机的时候,身边的一些人向我介绍了这个解释型脚本语言吧.大一自学了一部分,刚好听的网课是嵩天老师的课,这学期迫不及待地拉着舍友选了这个 ...
- Flex 布局的教程
前言:以前也经常用flex布局,但是最近看到别人使用的时候,发觉以前自己还是不够理解这个,重新看了一遍http://www.ruanyifeng.com/blog/2015/07/flex-gramm ...
- DatetimeHelper,时间帮助类
public static class DateTimeEx { /// <summary> /// 得到中文形式的日期 /// </summary> /// <para ...
- Centos7 系统下怎么更改apache默认网站目录
当我们在Centos7中配置好Apache时,发现apache默认解析目录是在 /var/www/html,也就是说当访问服务器 IP 或者本地 localhost 时,默认定位到这个目录里的 ind ...
- openssl error while loading serial number
unable to load number from D:/Program Files/OpenSSL-Win64/bin/demoCA/serialerror while loading seria ...
- Hive 特殊日期获取 tips
获取当前日期 SELECT CURRENT_DATE, CURRENT_TIMESTAMP, from_unixtime(unix_timestamp()); 上个月1号 concat(substr( ...
- JAVA学习记录(二)————JAVA中的IO
Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列. 数据流是一串连续不断的数据的集合,就象水 ...