做程序员,要相信bug无处不在的真理。

我们在查找bug的过程,就叫调试(debugging)。

0x01 暴力测试

暴力测试是最简单的。

在程序中写入输出语句(如printf、NSLog等)来输出程序中的控制流程和一些数据,这就是暴力测试。

对于小系统或者刚刚学习的新系统,暴力测试非常有用。

0x02 Xcode的调试器

Xcode有一个调试器(debugger)。

它可以中断程序,让我们在程序运行过程中检查程序的数据甚至修改程序,完成后可以恢复程序运行并查看结果。

它还让我们可以单步执行代码,减缓程序运行速度,细致地查看代码会如何对数据进行改动。

Xcode还有一个提供大量概述信息的调试窗口,以及一个可以直接向调试器发送调试命令的调试控制台(Console)。

0x03 开始调试

设置断点Breakpoint

断点是调试工作中必不可少的工具。

点击代码编辑区的左侧边栏,可以在当前鼠标所在行设置一个断点,Xcode用蓝色箭头标签标示。

不需要断点的话可以单击蓝色标签使它失效,也可以直接拖出边栏删掉。

运行程序

点击播放箭头,Xcode会先编译程序,如果编译通过,则显示Build Succeeded,同时程序将运行至断点处停住:

调试器操作

调试器提供了继续执行、单步执行、跳入、跳出的功能。

  • 第一个按钮是调试器窗口的显示和隐藏;
  • 第二个按钮是断点工具效果开关;
  • 第三个按钮是继续按钮,点击后程序会继续运行直到遇见下一个断点、结束或者崩溃;
  • 第四个按钮是跳过按钮,可视为单步执行;
  • 第五个按钮是跳入按钮,如果程序里有当前光标所在函数或方法的源代码,Xcode将跳入并显示其代码,并将指示箭头设置在代码的起始位置;
  • 第六个按钮是跳出按钮,点击它会终止当前运行的函数,同时程序会停在调用函数那行的下一行代码;
  • 第七个按钮是位置模拟功能;
  • 所有按钮的最右是一个线程编程控件,可以让程序员选择观察对应线程的下拉菜单。

检查程序

Xcode有强大的数据提示功能,程序调试过程中我们可以在变量或方法参数上悬停鼠标,Xcode就会弹出一个小窗口显示它的当前数值。

此时我们还可以双击弹出的数值,并修改它的当前值。

例如index目前是0,如果我们改成10,那程序多运行几个单步就会因index值超出索引范围而退出:

深入了解Xcode 7——调试相关推荐

  1. 如何使用Xcode分析调试在真机运行的UE4 IOS版游戏

    http://www.cnblogs.com/TracePlus/p/4090227.html 写本文的是因为UE4 官方文档虽然也有,但主要讲的是是用UE4Editor把游戏打成一个IPA包的形式发 ...

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

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

  3. xcode反汇编调试iOS模拟器程序

    分享一下我老师大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow http://bl ...

  4. Xcode的调试技巧

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

  5. xcode开发html5工具,5个Xcode开发调试技巧

    1.Enable NSZombie Objects(开启僵尸对象) Enable NSZombie Objects可能是整个Xcode开发环境中最有用的调试技巧.这个技巧非常非常容易追踪到重复释放的问 ...

  6. (转)5个Xcode开发调试技巧

    1.Enable NSZombie Objects(开启僵尸对象) Enable NSZombie Objects可能是整个Xcode开发环境中最有用的调试技巧.这个技巧非常非常容易追踪到重复释放的问 ...

  7. iOS之Xcode断点调试

    目录 一.Breakpoint(断点)调试 1.Edit Breakpoint (1)Condition (2)Ignore (3)action (4)Options 2.Disable Breakp ...

  8. [转] Xcode 高级调试技巧

    在苹果的官方文档中列出了我们在调试中能用到的一些命令,我们在这重点讲一些常用的命令 调试本地文件方法(Mac OS X):(lldb) target create "/Users/piaoy ...

  9. Xcode高级调试技巧(1)

    在苹果的官方文档中列出了我们在调试中能用到的一些命令,我们在这重点讲一些常用的命令 调试本地文件方法(Mac OS X):(lldb) target create "/Users/piaoy ...

最新文章

  1. ASP.NET中随机数生成及应用
  2. DL之Mask R-CNN:2018.6.26世界杯阿根廷队VS尼日利亚比赛2:1实现Mask R-CNN目标检测
  3. 苹果mp3软件_神技能!!!音视频制作软件
  4. c语言int32u的作用,求c语言大神 帮我解释一下这段说的都是啥?
  5. 关于C#序列化结果的长度获取
  6. leetcode 764.Largest Plus Sign
  7. eclipse PHP开发环境配置
  8. [转]你可能不知道的五个强大HTML5 API
  9. 动态SQL实现批量删除指定数据库的全部进程
  10. Creating and Destroying Objects
  11. python asyncio tcp server_关于 asyncio 创建多个 tcp 连接,线程数不准确的问题
  12. 万能解压器安卓版_全能压缩软件下载
  13. 核心参数相近 功能表现不同 联发科MT8389与全志A31s多方位PK
  14. Cesium为3dTile模型添加气泡框
  15. 【Windows】windows生成rsa密钥对
  16. sigma-delta_Delta调试-简化失败的测试用例
  17. QT设置应用程序图标设置
  18. 记录:关于Win10系统中Microsoft Edge上的网页如何滚动截屏?
  19. 如何清除DNS污染?
  20. Mybatis实战练习六【批量删除Mybatis参数传递】

热门文章

  1. 微信小程序通过data-xxx获取不到dataset数据
  2. bios中可见新硬盘,windows中看不到硬盘
  3. 倒霉的一天!!!!!!!
  4. python数组全部平方_LeetCode 题解 | 279. 完全平方数
  5. 军需学校计算机,军营之星:某军需仓库士官自学8种计算机应用技术
  6. 优酷系统:创建mysql连接python 表
  7. IT连创业系列:新的一年,先淫文一篇!
  8. Matplotlib 3D绘图
  9. springBoot+security+mybatis 实现用户权限的数据库动态管理
  10. Threejs 实现测量功能距离,厚度,角度和面积