美文网首页程序员
Xcode 调试之 Breakpoint

Xcode 调试之 Breakpoint

作者: 花与少年_ | 来源:发表于2017-05-16 16:53 被阅读61次

    NSLog 应该是最基本的调试方法,但是 NSLog 也有一些问题,比如

    • 需要提前设置宏,在 release 版本中避免疯狂打印
    • NSLog 比较耗费资源,Apple 本身设计其为打印错误日志,是对系统级打印的封装

    为了避免这些问题,我们可以利用 Xcode 中的断点调试工具调试,也可以利用 lldb 断点调试,这篇我们先看看 Xcode 中的打断点吧~

    调试断点,依赖于父进程和子进程之间的通信,打断点实际是在被调试的程序中,改变断点附近程序的代码,这个断点使得被调试的程序,暂时停止,然后发送信号给父进程(调试器进程),然后父进程能够得到子进程的变量和状态,达到调试的目的。

    Breakpoint

    打一个断点谁都会,但是除了单单打断点之外,我们还可以通过编辑这个断点,设置一些触发、过滤条件来调试代码:

    编辑 Breakpoint
    Condition

    设置条件断点,写一些简单的判断,使程序在满足一定条件才会停下来

    Ignore

    可以忽略前n次,到n+1次再停下来

    Action

    给断点设置一些事件,里面包含很多事件


    Breakpoint 中的 Action 选项
    AppleScript

    AppleScript是苹果公司开发的一种脚本语言,可以用来控制运行于Mac OS上的程序,也可以写成独立运行的Applet。类似于英语,直观,易读。
    我们简单设置一段AS:


    在运行到断点时,在当前应用输出 Hello World! 停下时,Xcode 弹出 Hello World!
    Capture GPU Frame

    用于OpenGL ES调试,捕获断点处GPU当前绘制帧。

    Debugger Command

    这个与在控制台中输入 LLDB 命令一致,输入 po + OC对象,打印这个OC对象,输入 p + 基本数据类型变量,打印这个变量。
    下一篇文章我会对这个方面进行总结,敬请期待。

    Log Message

    在 Log Message 中输入命令,可以直接在控制台输出,有意思的是,还可以选择 Speak message ,让 siri 帮你读出这些信息。


    LogMessage 打印信息
    Shell Command

    在 Shell Command 中输入Shell 命令,到此断点时,会运行输入的
    Shell命令。

    输入ls,列出当前目录下文件
    Sound

    还有一个比较好玩的 Action 是 Sound,它会在触发断点时发出响声,我们可以在一些不能时刻关注到的代码设置这个断点,运行时,发出响声提示我们一些信息。

    设置当前如果断网了,"叮"一声

    全局断点

    除了给特定代码行设置断点以外,我们还可以设置全局断点,如图:

    全局断点
    Exception Breakpoint

    异常断点在每次程序发生了异常时,都会被中断,一般用来捕获一些未知的异常,这个大家应该都比较熟悉。

    Symbolic Breakpoint

    符号断点可以在运行到设置的特定函数时,被中断。

    设置Symbolic 为viewWillAppear:就会在所有控制器调用viewWillAppear时中断

    讲完了 Breakpoint 的调试技巧,下一篇我们说一下 lldb 的调试方法,总的来说,Breakpoint 能做的,lldb 也能做;而 lldb 能做的,Breakpoint 可不一定能做,所以敬请期待哟😉

    相关文章

      网友评论

        本文标题:Xcode 调试之 Breakpoint

        本文链接:https://www.haomeiwen.com/subject/qyllxxtx.html