原文网址: blog.csdn.net/fhbystudy/article/details/12856261

本文由CocoaChina翻译组成员Creolophus(github主页)翻译自苹果官方文档Xcode Overview:Debug Your App,校对唧唧歪歪,敬请勘误。

当您点击了工作区工具条中的运行按钮并且你的应用编译成功,那么Xcode运行您的应用程序并开启调试功能。您可以使用图形化的工具直接在源码编辑器中调试应用,比如使用Data tips、快速查看(Quick look)来查看变量值。

调试区域(Debug area)和调试导航器(Debug navigator)可以让您检查运行中的app的状态,并控制其执行。

为了创建一个高质量的应用,要尽可能减少应用对用户系统的影响。使用调试导航器(Debug navigator)中的调试仪表(Debug gauges)深入了解你应用的资源消耗,当你发现问题时,请使用Instruments确认并分析应用的性能。

如果你正在开发一款iOS应用,在设计和早期测试阶段可以使用iOS模拟器找出存在的问题。

你 可以配置Xcode来帮助你专注于调试任务。举例来说,当代码运行到一个断点时,你可以让Xcode自动播放一次警告声,并创建一个命名为的Debug标 签的窗口,Xcode可在此展示调试区(Debug area)、调试导航器(Debug navigator)以及断点处的代码。

控制执行并观察状态信息(Control Execution and View State Information)

Xcode 允许您一行一行单步调试你的代码来查看特定执行阶段中应用的状态。使用调试区域(Debug area)来控制代码的执行,观察程序的变量和寄存器,观察控制台的输出并且与调试器交互。 你也可以使用调试区导航渲染帧的OpenGL调用,并查看特定调用的渲染状态信息。

通过点击工作区窗口工具条上视图选择器的中间按钮()来展示调试区域(Debug area)。

点击调试区工具栏中的暂停按钮(在暂停和继续之间切换)来暂停app的执行。想要设置断点,只需要打开源代码文件,并且点击你想暂停执行代码所在行的边列(Gutter)。边列中一个蓝色箭头()会标识断点。如果想了解更多关于断点的信息,包括如何设置断点行为和不同类型的断点,请查看Breakpoint Navigator Help.

暂停应用后,当前正在执行的代码行会用绿色高亮。你可以使用调试区顶部条上的Step Over()、Step Into()、Step Out()三个按钮来单步调试代码的执行。Step Over会执行当前行的代码行,包括任何的方法。如果当前的代码行调用了一个方法,step into会开始执行当前代码行,然后在到达被调用方法的第一行时停止。Step Out则执行当前方法或函数的剩余部分。

当暂停执行时,调试导航器会打开并展示一个堆栈追踪。选中其中一项,在编辑区和调试区中查看该项目的信息。当你调试时,可展开或收起线程来显示或隐藏堆栈框架。

将指针悬停在源代码编辑器中的任何变量上,可查看一个显示着变量值的数据提示。点击变量旁边的Inspector图标(),将对象的Objective-C描述打印至调试区控制台,并在一个额外弹出视图中展示。

点击Quick Look图标()观察变量内容的图形化展示。你可以针对自己的对象实现自定义的快Quick Look。详细信息请查看Quick Look for Custom Types in the Xcode Debugger.

当你在设备上构建并运行一个OpenGl ES应用时,调试区工具栏会包含一个Frame Capture 按钮( )。点击该按钮来捕捉一个frame。你可以使用OpenGL ES帧捕获做以下事情:

· 检查OpenGL ES 状态信息

· 内省OpenGL ES 对象,比如视图纹理和着色器。

· 在每次绘制调用之前单步调试状态调用,然后观察每个调用的变化。

· 单步调试绘制调用以准确查看如何构建图像。

· 在辅助编辑器中查看每个绘制调用使用哪些对象。

· 编辑着色器以查看应用程序上的效果。

以下截图展示已渲染帧的组件。左侧调试导航器显示部分渲染树,主调试器显示已渲染帧的颜色和深度资源,并展示其他一些图片资源。

想要了解更多关于调试OpenGL ES的信息,请查看Debug Navigator Help 和 Debug Area Help.

在运行时检查你应用的视图层次(Examine Your App’s View Hierarchy at Runtime)

点击在调试区顶栏的Debug View Hierarchy按钮()来检查当前暂停应用的3D渲染视图分层。你可以:

· 通过在画布中点击并拖动来旋转该透视图。

· 使用左下方的滑动条增大或减小各视图层之间的间距。

· 使用右下方双滑块的滑动条改变可见视图的范围。滑动左滑块来改变最底层可见的视图,滑动右滑块来改变最上层可见的视图

· 按下展示剪切内容按钮()来显示选中视图中被裁减的内容。

· 按下展示约束按钮()来显示选中视图的任何Auto Layout约束。

· 使用放大(+)按钮和缩小(—)按钮来增加或减少透视图的放大倍数。

想要了解更多调试视图的信息,请查看Debugging Views

检查应用对系统资源的影响(Examine Your App’s Impact on System Resources)

调 试导航器(Debug navigator)提供了能对应用程序性能进行深度分析的仪表。比如CPU仪表计量器展现了app的CPU的使用率,方便你侦测异常情况。根据应用的目 的和功能,仪表计量器可以告诉你应用对内存、iCloud、OpenGL ES、电量以及CPU的影响。

如果想要看详细的报告,可单击调试区的某个仪表计量器。如果你想要对你应用做更深层次的分析,请点击Profile In Instruments按钮。

在问题区,电量报告会提供一个初步的诊断来告知你什么可能在严重损耗你的用电量。

想要更多帮助,请查看Using Debug Gauges

测量应用程序的性能(Measure Your App’s Performance)

Xcode 中的Instruments程序会从在运行的应用中收集数据,并且展现在一个图形化的时间线上。使用Instruments,你可以收集性能方面的数据, 比如你应用的内存使用,磁盘活动情况,网络活动情况和图形操作。通过把数据放在一起查看,你可以分析你应用表现的各个方面来找出潜在提升性能的可能。你也 可以自动化测试iOS应用的界面元素。

在Xcode几种方法来打开Instruments,比如:

· 从仪表计量器详细报告界面点击Profile in Instruments 按钮

· 选择Product>Profile

· 在一个scheme中的Profile项中指定一个Instrument

Instruments程序使用名为instruments的单独的数据采集模块,来随时收集某个进程的数据。Instruments程序有一个模板库,每个模板包括了为获取相关信息的一系列instruments。

想要了解更多信息,请查看Performance OverviewInstruments User Guide

在iOS模拟器上进行早期测试(Perform Early Testing in iOS Simulator)

iOS模拟器可帮你在设计和早期测试阶段找到主要的问题。举例来说,iOS模拟器的Debug菜单提供的多款工具可为你提供帮助:

· 减速一个动画来找出问题。

· 触发iCloud同步。

· 辨认出那些可能会有损你应用性能的混合视图层。

· 辨别出源像素没有对准到目标像素的图片

· 查看哪些内容在屏幕外渲染渲染。

· 模拟不同的地点。

在 iOS模拟器的任何模拟环境下,主屏幕都会提供打开iOS原生应用(比如Safari,Contacts,Maps和Passbook)的功能。你可以在 iOS模拟器中初步的测试你的应用与这些应用的交互。举例来说,如果你正在测试一款游戏,可以使用iOS模拟器来测试这款游戏是否正确调用Game Center。

iOS模拟器中的辅助功能检视器(Accessibility Inspector)可帮助你不受个人制约的测试你应用的可用性。Accessibility Inspector显示你应用可访问的每个元素的信息并且可以模拟VoiceOver与这些元素交互。如果想打开Accessibility Inspector,点击iOS模拟器的主屏按钮然后点击设置>通用>辅助功能。将Accessibility Inspector右侧滑动按钮打开。

你可以在iOS模拟器通过改变语言来测试你应用的本地化。设置>通用>语言与地区>iPhone语言。

尽管你可以在iOS模拟器中测试你应用的基本功能,但是作为一个测试平台,由于诸多原因,模拟器还有很多限制。比如:

· 因为iOS模拟器是在Mac上运行,并使用电脑的内存,这远大于真机上的内存。

· iOS模拟器使用Mac的CPU运行而不是iOS真机的CPU。

· iOS模拟器并不运行真机上的所有线程。

· iOS模拟器无法模拟像加速度计,陀螺仪,摄像头,或者近距离传感器之类的硬件特性。

开发应用时,请务必在你想要支持的所有iOS真机和iOS系统版本上运行和测试。

想要了解更多详细信息,请查看iOS Simulator User Guide中的Testing and Debugging in iOS Simulator一节。

自定义你的调试工作流(Customize Your Debugging Workflow)

通过Xcode Behaviors来偏好定制Xcode的行为。选择Xcode> Behaviors,自定义在建立、运行和调试应用时Xcode该做的事。

比如,Xcode可以在你代码在断点暂停时显示调试区域或者在建立应用失败时,显示问题导航器

下面截图中展示了当代码暂停时,Xcode行为是怎么自定义的下面有些自定义行为的例子。

· 每次暂停时播放一个提示音。

· 在工作区域窗体中创建一个名为Debug的标签来展示调试导航器。

· 在Debug标签中同时展示变量视图和控制台视图。

· 在Debug标签中隐藏Utilities区域。

当你设置了上面的行为后,当项目中的代码碰到断点时,Xcode在工作区窗口创建一个debug标签,里面显示特定的内容。

你 可以自定义Xcode的行为,这些自定义行为可以由菜单中的选项或者绑定的快捷键触发。选择Xcode > Preferences, 选择Behaviors偏好窗口,然后点击底部的Add(+)按钮。输入新行为的自定义名称然后按下Return。在右侧复选框中勾选当你触发这个行为时 你想让Xcode做的事。比如,建立一个名为Unit Testing的行为用来保存你工程的快照并且运行你的单元测试。当你建立这个行为后,它会出现在Xcode> Behaviors菜单中。

想给自定义行为添加个快捷键的话,选择Xcode > Preferences然后点击Key Bindings。在Key Bindings偏好窗口中,选择Customized标签找到你自定义的行为。在文本框中,键入快捷键然后点击文本框以外的地方完成操作。

想要了解更多断点的类型和断点的作用,查看Breakpoint Navigator Help

[转]Xcode概览:调试应用程序的更多相关文章

  1. 在xcode 上调试c程序

    打开xcode 选择 Create a new Xcode project 选择Command Line Tool 给你的项目起个名,选择c语言 点击next 选择存储位置,就会制动生成一个项目,在项 ...

  2. 【转】Xcode概览:调试应用程序

    原文转自:http://www.cocoachina.com/ios/20141128/10358.html 本文由CocoaChina翻译组成员Creolophus(github主页)翻译自苹果官方 ...

  3. xcode的调试技巧

    转自:http://www.cnblogs.com/daiweilai/p/4421340.html#biyouji 目录 前言逼优鸡知己知彼 百战不殆抽刀断Bug 普通操作 全局断点(Global ...

  4. 【转】Xcode概览(Xcode 6版):循序渐进认识Xcode

    该系列文章翻译自苹果的Xcode Overview文档,对大部分开发者来说,已经非常熟悉Xcode的功能和特性,不过伴随着iOS 8 SDK的发布,Xcode 6中也有些许调整,所以对该文档进行了翻译 ...

  5. 使用Xcode进行调试

    目录 知己知彼 百战不殆抽刀断Bug 普通操作 全局断点(Global BreakPoint) 条件断点(Condational Breakpoints)打印的艺术 NSLog 开启僵尸对象(Enab ...

  6. 使用未付费的账号真机调试 iOS 程序,过几天后程序一打开就会闪退

    使用未付费的苹果开发者账号真机调试 iOS 程序,过几天后程序一打开就会闪退.   解决办法: 删除 Provisioning Profile,重新配置一次. 终极解决办法:花钱购买苹果开发者账号. ...

  7. Xcode视图调试

    视图调试 使用视图调试器检查您的视图层次结构,可以轻松地判断视图位置.大小以及实现问题. 在XCode中运行你的应用程序,在调试栏上点击“调试视图层次”按钮,进入视图调试器. XCode停止你的应用程 ...

  8. iPhone 真机调试应用程序

    原文:http://blog.sina.com.cn/s/blog_68e753f70100r3w5.html 真机调试iphone应用程序 1.真机调试流程概述 1)       真机调试应用程序, ...

  9. iOS开发之Xcode常用调试技巧总结

    转载自:iOS开发之Xcode常用调试技巧总结 最近在面试,面试过程中问到了一些Xcode常用的调试技巧问题.平常开发过程中用的还挺顺手的,但你要突然让我说,确实一脸懵逼.Debug的技巧很多,比如最 ...

随机推荐

  1. 通知消息与ON_NOTIFY

    1.通知消息一般是由子控件发出,由父窗口响应,因此响应函数的位置在父窗口内. 2.通知消息发送给父窗口的是通知码,即WM_NOTIFY消息(但为了区分方便不同的消息有不同的名称,但都是以WM_NOTI ...

  2. Python TCP通信网络编程

    最近在看廖雪峰老师的基础教程(http://www.liaoxuefeng.com/),今天实现了一下简单Python的Socket的网络编程. 1. Socket网络编程 Socket是网络编程的一 ...

  3. Winform开发入门集中培训系列文章

    最近有个培训,写PPT不如写博客了,共享是程序猿的职业情操吧,因此,本人准备写一个Winform开发的系列文章,对于初级开发者来说,应该比较有用,写作当中不免错误或不成熟的地方,看到的朋友请留言指出, ...

  4. 【leetcode刷题笔记】Plus One

    Given a non-negative number represented as an array of digits, plus one to the number. The digits ar ...

  5. C语言逗号运算符和逗号表达式

    在C语言中逗号","也是一种运算符,称为逗号运算符. 其功能是把两个表达式连接起来组成一个表达式, 称为逗号表达式.其一般形式为:表达式1,表达式2 其求值过程是分别求两个表达式的 ...

  6. java将白色背景图片转换成透明图片

    package evecom.image; import java.awt.Graphics2D; import java.awt.Image; import java.awt.image.Buffe ...

  7. [POI 2018] Plan Metra

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=5100 [算法] 首先分两类考虑 : 1. 1 -> N的路径不经过其它节点 , ...

  8. 洛谷 P2701 [USACO5.3]巨大的牛棚Big Barn

    题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 N ...

  9. What is Photon Server?

    http://blog.csdn.net/menuconfig/article/details/8215033 Photon Server是一套套裝的遊戲伺服器,以往開發線上遊戲都必需自行花費大筆的研 ...

  10. 系列文章--Node.js学习笔记系列

    Node.js学习笔记系列总索引 Nodejs学习笔记(一)--- 简介及安装Node.js开发环境 Nodejs学习笔记(二)--- 事件模块 Nodejs学习笔记(三)--- 模块 Nodejs学 ...