[中文]iOS技术问答 QA1747 调试部署的iOS应用程序

QA1747调试部署的iOS应用程序

问:我如何在没有Xcode调试器的情况下调试一个已部署的程序?

答:一旦你已经部署你的应用,无论是通过App Store还是企业部署,你都无法使用Xcode的调试器调试它。你需要通过分析设备的崩溃日志和控制台的输出来调试问题。

更多丰富NSLog语句的信息,请查看 Improved logging in Objective-C.。

获得奔溃日志和控制台输出
使用Xcode获得奔溃日志和控制台输出

重要提示:当前,Xcode并不会自动添加低内存警告的日志。你必须通过*不使用Xcode获得奔溃日志*一节的说明来手工获得他们。更多关于低内存日志的信息,请查看Understanding and Analyzing iOS Application Crash Reports.

即使你不能在Xcode调试器下运行这个程序,Xcode仍然可以给你所有你需要的信息来调试问题。

  1. 插上设备并打开Xcode
  2. 打开Organizer窗口并选择Device选项卡
  3. 在DEVICES部分,展开该设备列表
  4. 选择Device Logs查看奔溃日志或者选择Console查看控制台输出

不使用Xcode获得控制台输出
有时你需要现场调试一个问题,或者告诉测试人员如何获得更多的信息提供给你。在没有安装Xcode的情况下,可以下载*iPhone 配置实用工具*来保存控制台输出。它可用于Mac OS X和Windows。

  1. 插上设备并打开iPhone 配置实用工具
  2. 选择左侧DEVICES菜单下的设备
  3. 选择Console选项卡
  4. 按下窗口右下角的*Save Console As…*按钮导出控制台日志

不使用Xcode获得奔溃日志
在插入设备并同步iTunes后,根据不同的平台,奔溃日志可以在以下位置找到。

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>

是使用者登陆计算机的名称。 是iOS设备的名称, 比如, “John’s iPhone”.

启用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-