QA1747调试部署的iOS应用程序
问:我如何在没有Xcode调试器的情况下调试一个已部署的程序?
答:一旦你已经部署你的应用,无论是通过App Store还是企业部署,你都无法使用Xcode的调试器调试它。你需要通过分析设备的崩溃日志和控制台的输出来调试问题。
更多丰富NSLog语句的信息,请查看 Improved logging in Objective-C.。
获得奔溃日志和控制台输出
使用Xcode获得奔溃日志和控制台输出
重要提示:当前,Xcode并不会自动添加低内存警告的日志。你必须通过*不使用Xcode获得奔溃日志*一节的说明来手工获得他们。更多关于低内存日志的信息,请查看Understanding and Analyzing iOS Application Crash Reports.
即使你不能在Xcode调试器下运行这个程序,Xcode仍然可以给你所有你需要的信息来调试问题。
- 插上设备并打开Xcode
- 打开Organizer窗口并选择Device选项卡
- 在DEVICES部分,展开该设备列表
- 选择Device Logs查看奔溃日志或者选择Console查看控制台输出
不使用Xcode获得控制台输出
有时你需要现场调试一个问题,或者告诉测试人员如何获得更多的信息提供给你。在没有安装Xcode的情况下,可以下载*iPhone 配置实用工具*来保存控制台输出。它可用于Mac OS X和Windows。
- 插上设备并打开iPhone 配置实用工具
- 选择左侧DEVICES菜单下的设备
- 选择Console选项卡
- 按下窗口右下角的*Save Console As…*按钮导出控制台日志
不使用Xcode获得奔溃日志
在插入设备并同步iTunes后,根据不同的平台,奔溃日志可以在以下位置找到。
1 2 3 4 5 6 7 8 |
Mac OS X: ~/Library/Logs/CrashReporter/MobileDevice/<DEVICE_NAME> Windows XP C:\Documents and Settings\<USERNAME>\Application Data\Apple Computer\Logs\CrashReporter\MobileDevice\<DEVICE_NAME> Windows Vista or 7 C:\Users\<USERNAME>\AppData\Roaming\Apple Computer\Logs\CrashReporter\MobileDevice\<DEVICE_NAME> |
启用App Store诊断报告
重要提示:当前,Xcode并不会自动添加低内存警告的日志。你必须通过*不使用Xcode获得奔溃日志*一节的说明来手工获得他们。更多关于低内存日志的信息,请查看Understanding and Analyzing iOS Application Crash Reports.
如果一个程序被部署在App Stroe,你可以在iTunes Connect中查看到奔溃报告。但仅限于选择发送诊断和用量信息给Apple的用户。
如果有人报告了一个奔溃,而你没有在iTunes Connect中看到相应的报告,你可能需要依据以下的基础知识文章适用于Mac或适用于Windows指导他们,以便他们可以选择发送给你奔溃报告。
那些关闭App Store诊断报告的用户人和可以获得奔溃日志,以*不使用Xcode获得奔溃日志*一节所描述的方式获得,然后手工发送他们。
理解奔溃日志和控制台输出
理解奔溃日志的第一步和最重要一步是符号化他们。符号地址是使用人类可读的函数名称和行号替换内存地址。
如果你通过Xcode的Organizer窗口得到了一个设备的奔溃日志,然后他们会自动在几秒钟以后自动为您符号化。否则你将需要自己通过将.crash文件导入到Xcode Organizer中符号化。打开Xcode Organizer,选择“设备”选项卡,选择“LIBRARY”菜单下的“Device Logs”,点击“Import”按钮并选择.crash文件。
更多关于奔溃日志的信息,请查看 Understanding and Analyzing iOS Application Crash Reports 技术说明,以及 Understanding Crash Reports on iPhone OS WWDC 2010 Session.
via Technical Q&A QA1747 Debugging Deployed iOS Apps
-EOF-